]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/texunit.h
Rearrange soucre files into subdirectories
[libs/gl.git] / source / core / texunit.h
diff --git a/source/core/texunit.h b/source/core/texunit.h
new file mode 100644 (file)
index 0000000..6253d8d
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef MSP_GL_TEXUNIT_H_
+#define MSP_GL_TEXUNIT_H_
+
+#include <vector>
+
+namespace Msp {
+namespace GL {
+
+class Sampler;
+class Texture;
+
+/**
+Keeps track of texture unit related state.  Intended for internal use.
+*/
+class TexUnit
+{
+private:
+       unsigned index;
+       const Texture *texture;
+       const Sampler *sampler;
+
+       static std::vector<TexUnit> units;
+       static TexUnit *cur_unit;
+
+       TexUnit();
+
+public:
+       unsigned get_index() const { return index; }
+       bool set_texture(const Texture *);
+       const Texture *get_texture() const { return texture; }
+       bool set_sampler(const Sampler *);
+       const Sampler *get_sampler() const { return sampler; }
+       void bind();
+
+       static unsigned get_n_units();
+       static TexUnit &get_unit(unsigned);
+       static TexUnit &current();
+       static TexUnit *find_unit(const Texture *);
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif