]> git.tdb.fi Git - libs/gl.git/blobdiff - source/bufferable.h
Refactor the internal interface of Bufferable a bit
[libs/gl.git] / source / bufferable.h
index c8c9393caabe47176627be22891c3f0ccb0d04c1..d7d7e45fe2183fa606395bda73f184a1f3ace282 100644 (file)
@@ -44,6 +44,9 @@ protected:
        /** Returns the amount of data to be stored in the buffer, in bytes. */
        virtual unsigned get_data_size() const = 0;
 
+       /** Returns a pointer to the start of data in client memory. */
+       virtual const void *get_data_pointer() const = 0;
+
        /** Returns the alignment required for the data, in bytes.  The offset is
        guaranteed to be a multiple of this. */
        virtual unsigned get_alignment() const { return 1; }
@@ -59,11 +62,15 @@ protected:
        /** Called when the offset for the data has changed. */
        virtual void offset_changed() { }
 
+private:
+       bool resize_buffer() const;
+
+protected:
        /** Resizes the buffer if necessary and calls upload_data(). */
        void update_buffer() const;
 
        /** Uploads data to the buffer. */
-       virtual void upload_data() const = 0;
+       virtual void upload_data() const;
 };
 
 } // namespace GL