X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexenv.cpp;h=ff77e8cead0d6afb77fe51fd837b960377be8096;hp=c1585391bdcddc04ce809f25ce767001a046116f;hb=6fd9b09f47ff6a07bd5ca7f9e8887db3486bfcb1;hpb=787e0f5daaccb912fd351b26f9cb9026719ab384 diff --git a/source/texenv.cpp b/source/texenv.cpp index c1585391..ff77e8ce 100644 --- a/source/texenv.cpp +++ b/source/texenv.cpp @@ -11,35 +11,39 @@ TexEnv::TexEnv(): void TexEnv::set_mode(TexEnvMode m) { mode = m; - if(current()==this) + if(TexUnit::current().get_texenv()==this) glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode); } void TexEnv::set_color(const Color &c) { color = c; - if(current()==this) + if(TexUnit::current().get_texenv()==this) glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &color.r); } -void TexEnv::bind() const +void TexEnv::bind_to(unsigned i) const { - if(TexUnit::current().set_texenv(this)) + TexUnit &unit = TexUnit::get_unit(i); + if(unit.set_texenv(this)) { + unit.bind(); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode); glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &color.r); } } -const TexEnv *TexEnv::current() +const TexEnv *TexEnv::current(unsigned i) { - return TexUnit::current().get_texenv(); + return TexUnit::get_unit(i).get_texenv(); } -void TexEnv::unbind() +void TexEnv::unbind_from(unsigned i) { - if(TexUnit::current().set_texenv(0)) + TexUnit &unit = TexUnit::get_unit(i); + if(unit.set_texenv(0)) { + unit.bind(); Color black(0, 0, 0, 0); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, MODULATE); glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &black.r);