]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texgen.cpp
Always bind textures in a specific texture unit
[libs/gl.git] / source / texgen.cpp
index e9a75d7a0ea27286287ef78ae0e0b2b5402bd3bb..eb6179d08ef680e8732e544d7692533cec649a90 100644 (file)
@@ -22,10 +22,12 @@ void TexGen::set_plane(const Vector4 &p)
        plane = p;
 }
 
-void TexGen::bind_to(TexCoordComponent c) const
+void TexGen::bind_to(unsigned i, TexCoordComponent c) const
 {
-       if(TexUnit::current().set_texgen(coord_index(c), this))
+       TexUnit &unit = TexUnit::get_unit(i);
+       if(unit.set_texgen(coord_index(c), this))
        {
+               unit.bind();
                glTexGeni(c, GL_TEXTURE_GEN_MODE, mode);
                if(mode==EYE_LINEAR)
                        glTexGenfv(c, GL_EYE_PLANE, &plane.x);
@@ -35,14 +37,15 @@ void TexGen::bind_to(TexCoordComponent c) const
        }
 }
 
-const TexGen *TexGen::current(TexCoordComponent c)
+const TexGen *TexGen::current(unsigned i, TexCoordComponent c)
 {
-       return TexUnit::current().get_texgen(coord_index(c));
+       return TexUnit::get_unit(i).get_texgen(coord_index(c));
 }
 
-void TexGen::unbind_from(TexCoordComponent c)
+void TexGen::unbind_from(unsigned i, TexCoordComponent c)
 {
-       if(TexUnit::current().set_texgen(coord_index(c), 0))
+       TexUnit &unit = TexUnit::get_unit(i);
+       if(unit.set_texgen(coord_index(c), 0))
                disable(GL_TEXTURE_GEN_S+coord_index(c));
 }