};
/**
-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
{
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; }