]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texenv.h
Enhance the extension generator to support different APIs
[libs/gl.git] / source / texenv.h
index 8a341db331e13371939fbd7216499e3cc76b10df..c422331aadd8f95285a842d9322fde6241bce16a 100644 (file)
@@ -1,11 +1,54 @@
 #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:
+       enum ParameterMask
+       {
+               MODE = 1,
+               COLOR = 2
+       };
+
+       TexEnvMode mode;
+       Color color;
+
+public:
+       TexEnv();
+       ~TexEnv();
+
+       static const TexEnv &default_object();
+
+private:
+       void update_parameter(int) const;
+
+public:
+       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