X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexenv.cpp;h=703a8d0a95d0303140d37a5c1af9588e50735cfe;hb=12ac9bec8e03029c1042fd7732a2cfc04c9a9584;hp=6e5cca7748f2f6b25fa8194f15af2543a7caaf0e;hpb=50e504e2171295d5922ddf87b358e0024db3ce40;p=libs%2Fgl.git diff --git a/source/texenv.cpp b/source/texenv.cpp index 6e5cca77..703a8d0a 100644 --- a/source/texenv.cpp +++ b/source/texenv.cpp @@ -17,15 +17,19 @@ TexEnv::TexEnv(): void TexEnv::set_mode(TexEnvMode m) { - mode=m; + mode = m; + if(current()==this) + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode); } void TexEnv::set_color(const Color &c) { - color=c; + color = c; + if(current()==this) + glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &color.r); } -void TexEnv::bind() +void TexEnv::bind() const { if(TexUnit::current().set_texenv(this)) { @@ -34,9 +38,19 @@ void TexEnv::bind() } } +const TexEnv *TexEnv::current() +{ + return TexUnit::current().get_texenv(); +} + void TexEnv::unbind() { - TexUnit::current().set_texenv(0); + if(TexUnit::current().set_texenv(0)) + { + 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); + } } } // namespace GL