Skip to content

Class VertexBuffer

ClassList > 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 = 0
OpenGL buffer object ID (0 = invalid/empty)
GLuint buf_size = 0
Allocated 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:

  • data Pointer to float array
  • size Array size in floats

function VertexBuffer [3/5]

Constructs VBO from a vector of floats.

VertexBuffer::VertexBuffer (
    const std::vector< float > & data
) 

Parameters:

  • data Vertex 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:

  • vbo Source vertex buffer.

function VertexBuffer [5/5]

Move constructor. Transfers ownership; vbo is left empty.

VertexBuffer::VertexBuffer (
    VertexBuffer && vbo
) noexcept

Parameters:

  • vbo Source vertex buffer (invalidated after move).

function operator=

Copy assignment. Deep-copies GPU buffer content.

VertexBuffer & VertexBuffer::operator= (
    const VertexBuffer & vbo
) 

Parameters:

  • vbo Source vertex buffer.

Returns:

Reference to this.


function operator=

Move assignment. Transfers ownership; vbo is left empty.

VertexBuffer & VertexBuffer::operator= (
    VertexBuffer && vbo
) noexcept

Parameters:

  • vbo Source 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