Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

glt/lightm.cpp

Go to the documentation of this file.
00001 #include "lightm.h"
00002 
00015 #include <glt/error.h>
00016 
00017 #include <cstring>
00018 using namespace std;
00019 
00020 GltLightModel::GltLightModel(const bool getIt)
00021 {
00022     memset(_ambient,0,sizeof(_ambient));
00023     _localViewer = false;
00024     _twoSide = false;
00025 
00026     if (getIt)
00027         get();
00028 }
00029 
00030 GltLightModel::~GltLightModel()
00031 {
00032 }
00033 
00034 void 
00035 GltLightModel::get()
00036 {
00037     GLint localViewer;
00038     GLint twoSide;
00039 
00040     GLERROR
00041 
00042     glGetFloatv(GL_LIGHT_MODEL_AMBIENT,_ambient);
00043     glGetIntegerv(GL_LIGHT_MODEL_LOCAL_VIEWER,&localViewer);
00044     glGetIntegerv(GL_LIGHT_MODEL_TWO_SIDE,&twoSide);
00045 
00046     GLERROR
00047 
00048     _localViewer = localViewer!=0;
00049     _twoSide     = twoSide!=0;
00050 }
00051 
00052 void 
00053 GltLightModel::set()
00054 {
00055     GLERROR
00056 
00057     glLightModelfv(GL_LIGHT_MODEL_AMBIENT,_ambient);
00058     glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,_localViewer ? 1 : 0);
00059     glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,_twoSide ? 1 : 0);
00060 
00061     GLERROR
00062 }
00063 
00064 void 
00065 GltLightModel::setAmbient(const GLfloat r,const GLfloat g,const GLfloat b,const GLfloat a)
00066 {
00067     GLERROR
00068 
00069     _ambient[0] = r;
00070     _ambient[1] = g;
00071     _ambient[2] = b;
00072     _ambient[3] = a;
00073     glLightModelfv(GL_LIGHT_MODEL_AMBIENT,_ambient);
00074 
00075     GLERROR
00076 }
00077 
00078 void 
00079 GltLightModel::setLocalViewer(const GLboolean localViewer)
00080 {
00081     GLERROR
00082 
00083     _localViewer = localViewer;
00084     glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,_localViewer ? 1 : 0);
00085 
00086     GLERROR
00087 }
00088 
00089 void 
00090 GltLightModel::setTwoSide(const GLboolean twoSide)
00091 {
00092     GLERROR
00093 
00094     _twoSide = twoSide;
00095     glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,_twoSide ? 1 : 0);
00096 
00097     GLERROR
00098 }
00099 
00100 GLfloat   *GltLightModel::ambient()     { return _ambient;       }
00101 GLboolean &GltLightModel::localViewer() { return _localViewer;   }
00102 GLboolean &GltLightModel::twoSide()     { return _twoSide;       }
00103 

Generated on Tue Nov 5 11:11:03 2002 for GLT by doxygen1.2.18