Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

pge::LightShader Class Reference

#include <LightShader.h>

Collaboration diagram for pge::LightShader:

Collaboration graph
[legend]

Public Member Functions

 LightShader (GPUProgram *lightProgram)
 Constructor.

virtual ~LightShader (void)
 Destructor.

bool addActiveLight (Light *light)
void preRender (void)
void postRender (void)

Private Attributes

GPUProgramm_program
std::vector< Light * > m_activeLights

Constructor & Destructor Documentation

pge::LightShader::LightShader GPUProgram lightProgram  )  [inline]
 

Constructor.

Definition at line 36 of file LightShader.h.

References m_program.

00036                                                       {
00037                         m_program = lightProgram;
00038                 }

virtual pge::LightShader::~LightShader void   )  [inline, virtual]
 

Destructor.

Definition at line 47 of file LightShader.h.

References m_program.

00047                                            {
00048                         m_program = NULL;
00049                 }


Member Function Documentation

bool pge::LightShader::addActiveLight Light light  )  [inline]
 

Definition at line 60 of file LightShader.h.

References m_activeLights.

Referenced by pge::SingleTexturedMesh::getSurroundingLights().

00060                                                   {
00061                         if(m_activeLights.size() >= 3) {
00062                                 return false;
00063                         } else {
00064                                 m_activeLights.push_back(light);
00065                                 return true;
00066                         }
00067                 }

void pge::LightShader::postRender void   )  [inline]
 

Definition at line 98 of file LightShader.h.

References m_activeLights, m_program, and pge::GPUProgram::release().

Referenced by pge::SingleTexturedMesh::renderVBO().

00098                                       {
00099                         if(m_activeLights.size() != 3) {
00100                                 return;
00101                         }
00102                         m_program->release();
00103                 }

Here is the call graph for this function:

void pge::LightShader::preRender void   )  [inline]
 

Definition at line 73 of file LightShader.h.

References pge::GPUProgram::bind(), m_activeLights, pge::Light::m_diffuse, pge::Light::m_position, m_program, pge::GPUProgram::passUniform1f(), pge::GPUProgram::passUniform1i(), and pge::GPUProgram::passUniform4f().

Referenced by pge::SingleTexturedMesh::renderVBO().

00073                                      {
00074                         if(m_activeLights.size() != 3) {
00075                                 return;
00076                         }
00077                         Light *light0 = m_activeLights.at(0);
00078                         Light *light1 = m_activeLights.at(1);
00079                         Light *light2 = m_activeLights.at(2);
00080 
00081                         m_program->bind();
00082                         m_program->passUniform1f("dayNightCycle", DayNightCycle::getInstance()->getDayNightCycle());
00083                         m_program->passUniform4f("lightPosition0", light0->m_position);
00084                         m_program->passUniform4f("lightColor0", light0->m_diffuse);
00085 
00086                         m_program->passUniform4f("lightPosition1", light1->m_position);
00087                         m_program->passUniform4f("lightColor1", light1->m_diffuse);
00088 
00089                         m_program->passUniform4f("lightPosition2", light2->m_position);
00090                         m_program->passUniform4f("lightColor2", light2->m_diffuse);
00091                         m_program->passUniform1i("texture", 0);
00092                 }

Here is the call graph for this function:


Field Documentation

std::vector<Light*> pge::LightShader::m_activeLights [private]
 

Definition at line 120 of file LightShader.h.

Referenced by addActiveLight(), postRender(), and preRender().

GPUProgram* pge::LightShader::m_program [private]
 

Definition at line 119 of file LightShader.h.

Referenced by LightShader(), postRender(), preRender(), and ~LightShader().


The documentation for this class was generated from the following file:
Generated on Mon Oct 16 12:09:15 2006 for Phobosengine by doxygen 1.3.4