]> git.tdb.fi Git - libs/gl.git/blob - source/texenv.cpp
Drop Id tags and copyright notices from files
[libs/gl.git] / source / texenv.cpp
1 #include "texenv.h"
2 #include "texunit.h"
3
4 namespace Msp {
5 namespace GL {
6
7 TexEnv::TexEnv():
8         mode(MODULATE)
9 { }
10
11 void TexEnv::set_mode(TexEnvMode m)
12 {
13         mode = m;
14         if(current()==this)
15                 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode);
16 }
17
18 void TexEnv::set_color(const Color &c)
19 {
20         color = c;
21         if(current()==this)
22                 glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &color.r);
23 }
24
25 void TexEnv::bind() const
26 {
27         if(TexUnit::current().set_texenv(this))
28         {
29                 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, mode);
30                 glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &color.r);
31         }
32 }
33
34 const TexEnv *TexEnv::current()
35 {
36         return TexUnit::current().get_texenv();
37 }
38
39 void TexEnv::unbind()
40 {
41         if(TexUnit::current().set_texenv(0))
42         {
43                 Color black(0, 0, 0, 0);
44                 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, MODULATE);
45                 glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &black.r);
46         }
47 }
48
49 } // namespace GL
50 } // namespace Msp