X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexenv.cpp;h=ff77e8cead0d6afb77fe51fd837b960377be8096;hb=48b1ab4fff00c49cc15d70a354eedb3d7a2f3e87;hp=e6c06bcbbbcebbf2af37b25d9fe58ce02609e481;hpb=b617c5d7b5283ad260a77f01e42e6170cabbc03d;p=libs%2Fgl.git diff --git a/source/texenv.cpp b/source/texenv.cpp index e6c06bcb..ff77e8ce 100644 --- a/source/texenv.cpp +++ b/source/texenv.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2008 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include "texenv.h" #include "texunit.h" @@ -18,25 +11,43 @@ TexEnv::TexEnv(): void TexEnv::set_mode(TexEnvMode m) { mode = m; + 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(TexUnit::current().get_texenv()==this) + glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &color.r); } -void TexEnv::bind() +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); } } -void TexEnv::unbind() +const TexEnv *TexEnv::current(unsigned i) { - TexUnit::current().set_texenv(0); + return TexUnit::get_unit(i).get_texenv(); +} + +void TexEnv::unbind_from(unsigned i) +{ + 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); + } } } // namespace GL