Class VertexBuffer
OpenGL vertex buffer object wrapper. More...
#include <VertexBuffer.h>
Inherits the following classes: Buffers
Public Functions
| Type | Name |
|---|---|
| void | Bind () const Binds this VBO to GL_ARRAY_BUFFER. |
| void | Unbind () const Unbinds the current VBO (binds GL_ARRAY_BUFFER to 0). |
| VertexBuffer () = default Default constructor (empty buffer, buf_ID = 0). |
|
| VertexBuffer (float * data, GLuint size) = delete Constructs VBO from raw float array (deleted to prevent dangling pointers). |
|
| VertexBuffer (const std::vector< float > & data) Constructs VBO from a vector of floats. |
|
| VertexBuffer (const VertexBuffer & vbo) Copy constructor. Deep-copies GPU buffer content. |
|
| VertexBuffer (VertexBuffer && vbo) noexcept Move constructor. Transfers ownership; vbo is left empty. |
|
| VertexBuffer & | operator= (const VertexBuffer & vbo) Copy assignment. Deep-copies GPU buffer content. |
| VertexBuffer & | operator= (VertexBuffer && vbo) noexcept Move assignment. Transfers ownership; vbo is left empty. |
| ~VertexBuffer () = default Destructor. Releases OpenGL VBO (via Buffers ). |
Public Functions inherited from Buffers
See Buffers
| Type | Name |
|---|---|
| Buffers () = default |
|
| Buffers (const Buffers & buf) Copy constructor. Performs a GPU-side deep copy of buf . |
|
| Buffers (Buffers && buf) noexcept Move constructor. Transfers ownership from buf . |
|
| GLuint | GetID () const Returns the OpenGL buffer object ID. |
| GLuint | GetSize () const Returns the allocated buffer size in bytes. |
| Buffers & | operator= (const Buffers & buf) Copy assignment. Performs a GPU-side deep copy of buf . |
| Buffers & | operator= (Buffers && buf) noexcept Move assignment. Transfers ownership from buf . |
| ~Buffers () Destructor. Releases the OpenGL buffer object if valid. |
Protected Attributes inherited from Buffers
See Buffers
| Type | Name |
|---|---|
| GLuint | buf_ID = 0OpenGL buffer object ID (0 = invalid/empty) |
| GLuint | buf_size = 0Allocated buffer size in bytes. |
Protected Functions inherited from Buffers
See Buffers
| Type | Name |
|---|---|
| void | _deepCopyFrom (const Buffers & src) GPU-side deep copy from src . |
| void | _delBuffer () Deletes the OpenGL buffer object and resets buf_ID to 0. |
Detailed Description
VertexBuffer encapsulates a single VBO bound to GL_ARRAY_BUFFER. It inherits RAII resource management from Buffers, including GPU-side deep copy via glCopyBufferSubData.
Usage:
std::vector<float> vertices = { ... };
VertexBuffer vbo(vertices);
vbo.Bind();
// Configure vertex attributes...
vbo.Unbind();
// Deep copy (new GPU buffer allocated):
VertexBuffer copy = vbo;
// Transfer ownership (vbo is empty after this):
VertexBuffer moved = std::move(vbo);
Note:
Thread-safety: Not thread-safe. Must be used from the OpenGL context thread.
Note:
Ownership: Inherits Buffers ownership; releases via glDeleteBuffers in destructor.
Public Functions Documentation
function Bind
Binds this VBO to GL_ARRAY_BUFFER.
void VertexBuffer::Bind () const
Note:
Subsequent glVertexAttribPointer calls configure this buffer.
function Unbind
Unbinds the current VBO (binds GL_ARRAY_BUFFER to 0).
void VertexBuffer::Unbind () const
function VertexBuffer [1/5]
Default constructor (empty buffer, buf_ID = 0).
VertexBuffer::VertexBuffer () = default
function VertexBuffer [2/5]
Constructs VBO from raw float array (deleted to prevent dangling pointers).
VertexBuffer::VertexBuffer (
float * data,
GLuint size
) = delete
Parameters:
dataPointer to float arraysizeArray size in floats
function VertexBuffer [3/5]
Constructs VBO from a vector of floats.
VertexBuffer::VertexBuffer (
const std::vector< float > & data
)
Parameters:
dataVertex data (interleaved attributes)
Note:
Uploads data to GPU using GL_STATIC_DRAW. Sets buf_size accordingly.
function VertexBuffer [4/5]
Copy constructor. Deep-copies GPU buffer content.
VertexBuffer::VertexBuffer (
const VertexBuffer & vbo
)
Parameters:
vboSource vertex buffer.
function VertexBuffer [5/5]
Move constructor. Transfers ownership; vbo is left empty.
VertexBuffer::VertexBuffer (
VertexBuffer && vbo
) noexcept
Parameters:
vboSource vertex buffer (invalidated after move).
function operator=
Copy assignment. Deep-copies GPU buffer content.
VertexBuffer & VertexBuffer::operator= (
const VertexBuffer & vbo
)
Parameters:
vboSource vertex buffer.
Returns:
Reference to this.
function operator=
Move assignment. Transfers ownership; vbo is left empty.
VertexBuffer & VertexBuffer::operator= (
VertexBuffer && vbo
) noexcept
Parameters:
vboSource vertex buffer (invalidated after move).
Returns:
Reference to this.
function ~VertexBuffer
Destructor. Releases OpenGL VBO (via Buffers ).
VertexBuffer::~VertexBuffer () = default
The documentation for this class was generated from the following file src/render/buffers/VertexBuffer.h