]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.h
Add functions for setting arrays of 2x2 and 3x3 matrix uniforms
[libs/gl.git] / source / programdata.h
index e045c6fd10def72e59adfc92dc4586373a915361..f11a254cb8014e5ec9a341f5c695c5685b7c802c 100644 (file)
@@ -123,6 +123,7 @@ private:
        typedef std::map<Program::LayoutHash, ProgramUniforms> ProgramMap;
 
        // XXX All these mutables are a bit silly, but I'm out of better ideas
+       const Program *tied_program;
        SlotMap uniform_slots;
        std::vector<Uniform *> uniforms;
        mutable BlockMap blocks;
@@ -132,7 +133,7 @@ private:
        mutable unsigned dirty;
 
 public:
-       ProgramData();
+       ProgramData(const Program * = 0);
        ProgramData(const ProgramData &);
        ProgramData &operator=(const ProgramData &);
        ~ProgramData();
@@ -140,6 +141,7 @@ public:
 private:
        void uniform(const std::string &, Uniform *);
 public:
+       void uniform(const std::string &, const Uniform &);
        void uniform(const std::string &, int);
        void uniform(const std::string &, float);
        void uniform(const std::string &, int, int);
@@ -171,7 +173,13 @@ public:
        void uniform3_array(const std::string &, unsigned, const float *);
        void uniform4_array(const std::string &, unsigned, const int *);
        void uniform4_array(const std::string &, unsigned, const float *);
+       void uniform_matrix2_array(const std::string &, unsigned, const float *);
+       void uniform_matrix3_array(const std::string &, unsigned, const float *);
        void uniform_matrix4_array(const std::string &, unsigned, const float *);
+       void remove_uniform(const std::string &);
+
+       std::vector<std::string> get_uniform_names() const;
+       const Uniform &get_uniform(const std::string &) const;
 
 private:
        unsigned compute_slot_mask(const Program::UniformBlockInfo &) const;