]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texenv.h
Always bind textures in a specific texture unit
[libs/gl.git] / source / texenv.h
index 8a341db331e13371939fbd7216499e3cc76b10df..1327bb850de64999e297f504b82489811164104c 100644 (file)
@@ -1,11 +1,40 @@
 #ifndef MSP_GL_TEXENV_H_
 #define MSP_GL_TEXENV_H_
 
+#include "color.h"
+#include "gl.h"
+
 namespace Msp {
 namespace GL {
 
+enum TexEnvMode
+{
+       REPLACE  = GL_REPLACE,
+       MODULATE = GL_MODULATE,
+       DECAL    = GL_DECAL,
+       BLEND    = GL_BLEND,
+       ADD      = GL_ADD,
+       COMBINE  = GL_COMBINE
+};
+
 class TexEnv
 {
+private:
+       TexEnvMode mode;
+       Color color;
+
+public:
+       TexEnv();
+       void set_mode(TexEnvMode);
+       void set_color(const Color &);
+       TexEnvMode get_mode() const { return mode; }
+       const Color &get_color() const { return color; }
+       void bind() const { bind_to(0); }
+       void bind_to(unsigned) const;
+
+       static const TexEnv *current(unsigned = 0);
+       static void unbind() { unbind_from(0); }
+       static void unbind_from(unsigned);
 };
 
 } // namespace GL