#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();
+
+ 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