]> git.tdb.fi Git - libs/gl.git/blobdiff - source/uniformblock.h
Restructure ProgramData to support sharing between Programs
[libs/gl.git] / source / uniformblock.h
diff --git a/source/uniformblock.h b/source/uniformblock.h
new file mode 100644 (file)
index 0000000..815f49b
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef MSP_GL_UNIFORMBLOCK_H_
+#define MSP_GL_UNIFORMBLOCK_H_
+
+#include <map>
+
+namespace Msp {
+namespace GL {
+
+class Color;
+class Matrix;
+class Uniform;
+class Vector3;
+class Vector4;
+
+class UniformBlock
+{
+private:
+       std::map<int, Uniform *> uniforms;
+
+       UniformBlock(const UniformBlock &);
+       UniformBlock &operator=(const UniformBlock &);
+public:
+       UniformBlock() { }
+       ~UniformBlock();
+
+private:
+       void uniform(int, Uniform *);
+public:
+       void uniform(int, const Uniform &);
+       void uniform(int, int);
+       void uniform(int, float);
+       void uniform(int, float, float);
+       void uniform2(int, const float *);
+       void uniform(int, float, float, float);
+       void uniform(int, const Vector3 &);
+       void uniform3(int, const float *);
+       void uniform(int, float, float, float, float);
+       void uniform(int, const Vector4 &);
+       void uniform(int, const Color &);
+       void uniform4(int, const float *);
+       void uniform_matrix4(int, const float *);
+       void uniform_matrix4(int, const Matrix &);
+
+       void apply(int) const;
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif