X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexgen.cpp;h=4310d19a6cbfea8f2f82201997560b5d25c76e5c;hb=67538c60b8baa6816b8ae2d343ae62d881e6c58d;hp=e9a75d7a0ea27286287ef78ae0e0b2b5402bd3bb;hpb=777f5f37f2d89ef2a787a77d74372b643968740e;p=libs%2Fgl.git diff --git a/source/texgen.cpp b/source/texgen.cpp index e9a75d7a..4310d19a 100644 --- a/source/texgen.cpp +++ b/source/texgen.cpp @@ -12,6 +12,11 @@ TexGen::TexGen(): mode(EYE_LINEAR) { } +TexGen::~TexGen() +{ + // TODO unbind +} + void TexGen::set_mode(TexGenMode m) { mode = m; @@ -22,10 +27,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,15 +42,19 @@ 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)) + { + unit.bind(); disable(GL_TEXTURE_GEN_S+coord_index(c)); + } } unsigned TexGen::coord_index(TexCoordComponent c)