X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Funiformblock.h;h=1144158d2ee3ae760bb994be535b8657c9650faa;hp=de8b90e4bc5d2d86fd1ebc3749ec59f7ff108066;hb=HEAD;hpb=160e9eea29bd10034733d59507fa1bcca36be401 diff --git a/source/core/uniformblock.h b/source/core/uniformblock.h index de8b90e4..1144158d 100644 --- a/source/core/uniformblock.h +++ b/source/core/uniformblock.h @@ -11,10 +11,17 @@ namespace Msp { namespace GL { /** -Stores uniforms with a specific layout. Both named and default uniform blocks -are supported. +Stores uniform values in a block of memory. + +For named uniform blocks the values are stored according to the reflected +layout of the block, ready for use by shaders. For the default uniform block, +the location of the uniform is multiplied by 16 to obtain the memory offset. + +Applications normally don't need to deal with UniformBlocks directly. They're +managed by the ProgramData class, which provides a higher-level interface for +setting uniform values. */ -class UniformBlock: public UniformBlockBackend, public NonCopyable, public Bufferable +class UniformBlock: public UniformBlockBackend, public Bufferable { private: std::vector data; @@ -22,13 +29,14 @@ private: public: UniformBlock(const ReflectData::UniformBlockInfo &); - virtual unsigned get_data_size() const { return data.size(); } + virtual std::size_t get_data_size() const { return data.size(); } virtual const void *get_data_pointer() const { return &data[0]; } private: - virtual unsigned get_alignment() const; + virtual std::size_t get_alignment() const; public: - void store(const ReflectData::UniformInfo &, unsigned, const void *); + void store(const ReflectData::UniformInfo &, std::size_t, const void *); + void check_store_range(std::size_t, std::size_t); }; } // namespace GL