Lights.h
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:1k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. #ifndef _LIGHTS_H_
  2. #define _LIGHTS_H_
  3. #include "SimpleVector.h"
  4. class CLight // kind of messy :)
  5. {
  6.     class RGB 
  7.     { 
  8.         public:
  9.             float r, g, b; 
  10.             inline void Set( float rr, float gg, float bb )
  11.             { r=rr; g=gg; b=bb; } // try say *that* ten times
  12.             inline void Format( float* pFloats )
  13.             { 
  14.                 pFloats[0] = r;
  15.                 pFloats[1] = g;
  16.                 pFloats[2] = b;
  17.                 pFloats[3] = 1.0f;
  18.             }
  19.     };
  20.     public:
  21.         RGB             m_rgbAmbient;
  22.         RGB             m_rgbDiffuse;
  23.         CVector3        m_vPosition;
  24.         unsigned int    m_iId;
  25.         void Create( unsigned iId )
  26.         {
  27.             float fTemp[4];
  28.             m_iId = iId;
  29.             m_rgbAmbient.Format( (float*)fTemp );
  30.             glLightfv( m_iId, GL_AMBIENT, fTemp  );
  31.             m_rgbDiffuse.Format( (float*)fTemp );
  32.             glLightfv( m_iId, GL_DIFFUSE, fTemp  );
  33.             Pos();
  34.             Enable();
  35.         }
  36.         void Create()
  37.         {
  38.             Create( m_iId );
  39.         }
  40.         void Pos()
  41.         {
  42.             float fTemp[4];
  43.             fTemp[0] = m_vPosition.x;
  44.             fTemp[1] = m_vPosition.y;
  45.             fTemp[2] = m_vPosition.z;
  46.             fTemp[3] = 1.0f;
  47.             glLightfv( m_iId, GL_POSITION, fTemp );
  48.         }
  49.         void Enable() { glEnable( m_iId ); };
  50.         void Disable() { glDisable( m_iId ); };
  51. };
  52. #endif