X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Funiformblock.h;h=de8b90e4bc5d2d86fd1ebc3749ec59f7ff108066;hb=160e9eea29bd10034733d59507fa1bcca36be401;hp=c8b8d36a3d8e2deceaf8881d5dbb83ec0ae1f825;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/core/uniformblock.h b/source/core/uniformblock.h index c8b8d36a..de8b90e4 100644 --- a/source/core/uniformblock.h +++ b/source/core/uniformblock.h @@ -1,50 +1,34 @@ #ifndef MSP_GL_UNIFORMBLOCK_H_ #define MSP_GL_UNIFORMBLOCK_H_ -#include #include +#include #include "bufferable.h" -#include "program.h" -#include "vector.h" +#include "reflectdata.h" +#include "uniformblock_backend.h" namespace Msp { namespace GL { -class BufferRange; -class Matrix; -class Uniform; -struct Color; - /** Stores uniforms with a specific layout. Both named and default uniform blocks are supported. */ -class UniformBlock: public Bufferable +class UniformBlock: public UniformBlockBackend, public NonCopyable, public Bufferable { private: - std::map uniforms; - unsigned size; std::vector data; - mutable BufferRange *buf_range; - UniformBlock(const UniformBlock &); - UniformBlock &operator=(const UniformBlock &); public: - UniformBlock(); - UniformBlock(unsigned); - ~UniformBlock(); + UniformBlock(const ReflectData::UniformBlockInfo &); -private: - virtual unsigned get_data_size() const { return size; } + 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; - virtual void location_changed(Buffer *, unsigned, unsigned) const; public: - void attach(int, const Uniform &); - void attach(const Program::UniformInfo &, const Uniform &); - - void apply(int) const; + void store(const ReflectData::UniformInfo &, unsigned, const void *); }; } // namespace GL