X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Funiformblock.h;fp=source%2Fcore%2Funiformblock.h;h=9f2a0849e9cca10795c759456dc12fcf6405a386;hb=8366f8951984aa436938b1bb18a57067ff2260c1;hp=08eaa9b857e3dcbc1c8de08e7a129433dbc6b0ee;hpb=1a3eb3759708f41f0d57a271f2953e4de0506858;p=libs%2Fgl.git diff --git a/source/core/uniformblock.h b/source/core/uniformblock.h index 08eaa9b8..9f2a0849 100644 --- a/source/core/uniformblock.h +++ b/source/core/uniformblock.h @@ -20,50 +20,21 @@ struct Color; Stores uniforms with a specific layout. Both named and default uniform blocks are supported. */ -class UniformBlock: public NonCopyable -{ -protected: - UniformBlock() { } -public: - virtual ~UniformBlock() { } - - virtual void attach(const ReflectData::UniformInfo &, const Uniform &) = 0; -}; - -/** Stores uniforms for the default uniform block. Uniforms are associated -with locations, as returned by Program::get_uniform_location. */ -class DefaultUniformBlock: public UniformBlock -{ -private: - std::vector uniforms; - -public: - DefaultUniformBlock(); - - virtual void attach(const ReflectData::UniformInfo &, const Uniform &); - void attach(int, const Uniform &); - void apply() const; -}; - -/** Stores uniforms for a buffer-backed uniform block. Uniform values are -stored in a memory block which can be uploaded into a buffer and bound for use -by a Program. */ -class BufferBackedUniformBlock: public UniformBlock, public Bufferable +class UniformBlock: public NonCopyable, public Bufferable { private: - unsigned size; std::vector data; public: - BufferBackedUniformBlock(unsigned); + UniformBlock(const ReflectData::UniformBlockInfo &); - virtual unsigned get_data_size() const { return size; } -private: + virtual unsigned get_data_size() const { return data.size(); } virtual const void *get_data_pointer() const { return &data[0]; } +private: virtual unsigned get_alignment() const; public: - void attach(const ReflectData::UniformInfo &, const Uniform &); + void store(const ReflectData::UniformInfo &, const Uniform &); }; } // namespace GL