X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramdata.h;h=f11a254cb8014e5ec9a341f5c695c5685b7c802c;hp=78f7292647a97436fed9e4b28ed0bfa17280f4f0;hb=56beca9d8b4f7b4edac81411d31e24df88e84ac3;hpb=653b618e65b291a344abb1ee9d08dc5d1fde1094 diff --git a/source/programdata.h b/source/programdata.h index 78f72926..f11a254c 100644 --- a/source/programdata.h +++ b/source/programdata.h @@ -123,6 +123,7 @@ private: typedef std::map 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 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,9 +173,14 @@ 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 get_uniform_names() const; + const Uniform &get_uniform(const std::string &) const; + private: unsigned compute_slot_mask(const Program::UniformBlockInfo &) const; void update_block(UniformBlock &, const Program::UniformBlockInfo &) const;