]> git.tdb.fi Git - libs/gl.git/blobdiff - source/lighting.cpp
Some fixes to lighting management
[libs/gl.git] / source / lighting.cpp
index 5cda4f4c6a4e005a5ad71c22427ddc0c5d0d69c7..ce522ac06a11e77151a5c7fbe0967347674f2aa3 100644 (file)
@@ -104,14 +104,25 @@ void Lighting::bind() const
        if(lights.size()>LightUnit::get_n_units())
                throw invalid_operation("Lighting::bind");
 
+       const Lighting *old = current();
        if(!set_current(this))
                return;
 
        enable(GL_LIGHTING);
        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, &ambient.r);
        for(unsigned i=0; i<lights.size(); ++i)
+       {
                if(lights[i])
                        lights[i]->bind_to(i);
+               else
+                       Light::unbind_from(i);
+       }
+
+       if(old)
+       {
+               for(unsigned i=lights.size(); i<old->lights.size(); ++i)
+                       Light::unbind_from(i);
+       }
 
        if(fog_density)
        {