]> git.tdb.fi Git - libs/gl.git/blob - source/core/uniformblock.h
Move all OpenGL-specific code to a separate directory
[libs/gl.git] / source / core / uniformblock.h
1 #ifndef MSP_GL_UNIFORMBLOCK_H_
2 #define MSP_GL_UNIFORMBLOCK_H_
3
4 #include <vector>
5 #include <msp/core/noncopyable.h>
6 #include "bufferable.h"
7 #include "reflectdata.h"
8 #include "uniformblock_backend.h"
9
10 namespace Msp {
11 namespace GL {
12
13 /**
14 Stores uniforms with a specific layout.  Both named and default uniform blocks
15 are supported.
16 */
17 class UniformBlock: public UniformBlockBackend, public NonCopyable, public Bufferable
18 {
19 private:
20         std::vector<char> data;
21
22 public:
23         UniformBlock(const ReflectData::UniformBlockInfo &);
24
25         virtual unsigned get_data_size() const { return data.size(); }
26         virtual const void *get_data_pointer() const { return &data[0]; }
27 private:
28         virtual unsigned get_alignment() const;
29
30 public:
31         void store(const ReflectData::UniformInfo &, unsigned, const void *);
32 };
33
34 } // namespace GL
35 } // namespace Msp
36
37 #endif