]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/buffer.h
Update and improve documentation
[libs/gl.git] / source / core / buffer.h
index 810bfc1a56253e181f7cc55b5d228c3441e99fee..b642738e0e96ef370a5e748701be071998e2de54 100644 (file)
@@ -16,9 +16,14 @@ public:
 };
 
 /**
-A buffer for storing data in GL memory.  Putting vertex and index data in
-buffers can improve rendering performance.  The VertexArray, Mesh and
-UniformBlock classes contain built-in support for buffers.
+Stores data in GPU memory.
+
+Memory must be allocated for the buffer by calling storage().  Contents can
+then be modified either synchronously with the data() and sub_data() functions,
+or asynchronously by memory-mapping the buffer.
+
+Applications normally don't need to deal with Buffers directly.  They're
+managed by other classes such as Mesh and ProgramData.
 */
 class Buffer: public BufferBackend
 {
@@ -28,17 +33,16 @@ private:
        std::size_t size = 0;
 
 public:
-       /** Defines the storage size of the buffer.  Must be called before data can
-       be uploaded.  Storage cannot be changed once set. */
+       /** Sets the storage size and allocates memory for the buffer.  Size cannot
+       be changed once set. */
        void storage(std::size_t);
 
-       /** Uploads data into the buffer, completely replacing any previous
-       contents.  Storage must be defined beforehand.  The data must have size
-       matching the defined storage. */
+       /** Replaces contents of the entire buffer.  Allocated storage must exist.
+       The data must have size matching the defined storage. */
        void data(const void *);
 
-       /** Overwrites part of the buffer data with new data.  Storage must be
-       defined beforehand. */
+       /** Replaces a range of bytes in the buffer.  Allocated storage must exist.
+       The range must be fully inside the buffer. */
        void sub_data(std::size_t, std::size_t, const void *);
 
        std::size_t get_size() const { return size; }