]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/uniformblock.h
Store default-block uniform data in a memory block
[libs/gl.git] / source / core / uniformblock.h
index 08eaa9b857e3dcbc1c8de08e7a129433dbc6b0ee..9f2a0849e9cca10795c759456dc12fcf6405a386 100644 (file)
@@ -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<const Uniform *> 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<char> 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