shaders->Bind("replace_fixed");
shaders->SetInt("use_decal_map", 1);
shaders->SetInt("decal_map", 0);
shaders->SetInt("use_normal_map", 0);
shaders->SetInt("normal_map", 2);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);
//glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
std::vector<EG::Engine::Graphics::Light *>::iterator light_iterator = scene->GetRenderableLights()->begin();
while (light_iterator != scene->GetRenderableLights()->end()){
EG::Engine::Graphics::Light *light = *light_iterator;
if (light->IsEnabled()){
shaders->SetFloat3("light_position", light->Position().X(), light->Position().Y(), light->Position().Z());
shaders->SetFloat3("light_color", light->Color().X(), light->Color().Y(), light->Color().Z());
shaders->SetFloat4("lighting_parameters", light->Attenuation().X(), light->Attenuation().Y(), light->Attenuation().Z(), light->GetRadius());
std::vector<EG::Engine::Game::Object *>::iterator renderable_objects_iterator = scene->GetRenderableObjects()->begin();
while (renderable_objects_iterator != scene->GetRenderableObjects()->end()){
RenderObject((*renderable_objects_iterator));
++renderable_objects_iterator;
}
}
++light_iterator;
}
shaders->Unbind();
glDisable(GL_BLEND);There are three lights, red, green and blue...
I have a deferred renderer which is working fine, but I wanted to support some other hardware...
(say a work computer for those boring lunch hours)
I wrote a shader which did 3 lights at a time but I didn't want to be limited... blah
So I simplified the shader down to just one light and decided to use a multipass solution.
The computer I'm working on at work does not support any decent FBO setups so I'm skipping those for this purpose.
Basically what I get is the first light that was rendered....
so if I'm looping through my lights in this order, red, green, blue
I only see Red's light.
If I start it at Green, I only see Green, etc...
Can anyone see any obvious problems?






