]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.h
Introduce a typedef for uniform layout hashes in Program
[libs/gl.git] / source / programdata.h
index 38803c571ee2e210451ccc6abb3abd41ab005b23..6f9242e688928bd9e001f46419a1d04562845471 100644 (file)
@@ -4,17 +4,16 @@
 #include <map>
 #include <msp/datafile/objectloader.h>
 #include "program.h"
+#include "vector.h"
 
 namespace Msp {
 namespace GL {
 
 class Buffer;
-class Color;
 class Matrix;
 class Uniform;
 class UniformBlock;
-class Vector3;
-class Vector4;
+struct Color;
 
 /**
 Stores uniform variables for shader programs.  The uniforms are stored in a
@@ -58,7 +57,7 @@ private:
        };
 
        typedef std::map<std::string, Uniform *> UniformMap;
-       typedef std::map<unsigned, Block> BlockMap;
+       typedef std::map<Program::LayoutHash, Block> BlockMap;
 
        // XXX All these mutables are a bit silly, but I'm out of better ideas
        UniformMap uniforms;
@@ -67,10 +66,10 @@ private:
        mutable Buffer *buffer;
        mutable Changes changes;
 
-       ProgramData &operator=(const ProgramData &);
 public:
        ProgramData();
        ProgramData(const ProgramData &);
+       ProgramData &operator=(const ProgramData &);
        ~ProgramData();
 
 private:
@@ -87,8 +86,10 @@ public:
        void uniform(const std::string &, const Vector4 &);
        void uniform(const std::string &, const Color &);
        void uniform4(const std::string &, const float *);
+       void uniform_matrix2(const std::string &, const float *);
+       void uniform_matrix3(const std::string &, const float *);
+       void uniform(const std::string &, const Matrix &);
        void uniform_matrix4(const std::string &, const float *);
-       void uniform_matrix4(const std::string &, const Matrix &);
        void uniform1_array(const std::string &, unsigned, const float *);
        void uniform2_array(const std::string &, unsigned, const float *);
        void uniform3_array(const std::string &, unsigned, const float *);