X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramdata.h;h=e96a73acc651ba8ec9a1ab2b3af1cf77f337c4bc;hb=bc1675de82ea5c4a07bea4c5afa9c59c497464d2;hp=bc2289b52965a4e29262c1754139bec7efdbd33c;hpb=ed7ca8892daceebb963950945fed5e75bd96a8a1;p=libs%2Fgl.git diff --git a/source/programdata.h b/source/programdata.h index bc2289b5..e96a73ac 100644 --- a/source/programdata.h +++ b/source/programdata.h @@ -2,6 +2,7 @@ #define MSP_GL_PROGRAMDATA_H_ #include +#include #include #include "datatype.h" #include "matrix.h" @@ -11,6 +12,13 @@ namespace Msp { namespace GL { +class too_many_uniforms: public std::runtime_error +{ +public: + too_many_uniforms(const std::string &w): std::runtime_error(w) { } + virtual ~too_many_uniforms() throw() { } +}; + class Buffer; class Uniform; class UniformBlock; @@ -161,6 +169,12 @@ public: private: void uniform(const std::string &, Uniform *); + template + void uniform(const std::string &, V); + template + void uniform_array(const std::string &, unsigned, V); + bool validate_name(const std::string &) const; + void add_uniform(const std::string &, Uniform *); public: void uniform(const std::string &, const Uniform &); void uniform(const std::string &, int); @@ -219,6 +233,7 @@ public: std::vector get_uniform_names() const; const Uniform &get_uniform(const std::string &) const; + const Uniform *find_uniform(const std::string &) const; private: static bool uniform_name_compare(const NamedUniform &, const std::string &);