]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texenv.h
Better state tracking for bound objects
[libs/gl.git] / source / texenv.h
index fbacff3f69bec629ce8a17a307b250247b4e314e..61f700854b50030e43297b96310aa106622a36fb 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef MSP_GL_TEXENV_H_
 #define MSP_GL_TEXENV_H_
 
+#include "color.h"
+#include "gl.h"
+
 namespace Msp {
 namespace GL {
 
@@ -16,9 +19,35 @@ enum TexEnvMode
 
 class TexEnv
 {
+private:
+       enum ParameterMask
+       {
+               MODE = 1,
+               COLOR = 2
+       };
+
+       TexEnvMode mode;
+       Color color;
+
+public:
+       TexEnv();
+
+       static const TexEnv &default_object();
+
+private:
+       void update_parameter(int) const;
+
 public:
-       void mode(TexEnvMode);
-       void color(float, float, float, float);
+       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