Antkeeper  0.0.1
Public Member Functions | Friends | List of all members
gl::vertex_buffer Class Reference

Vertex buffer object (VBO). More...

#include <vertex-buffer.hpp>

Public Member Functions

 vertex_buffer (const vertex_buffer &buffer)
 Constructs a copy of a vertex buffer. More...
 
 vertex_buffer (vertex_buffer &&buffer)
 Move-constructs a vertex buffer. More...
 
 ~vertex_buffer ()
 Destroys a vertex buffer. More...
 
vertex_bufferoperator= (const vertex_buffer &buffer)
 Copies another vertex buffer. More...
 
vertex_bufferoperator= (vertex_buffer &&buffer)
 Moves another vertex buffer into this buffer. More...
 
void copy (const vertex_buffer &read_buffer, std::size_t copy_size, std::size_t read_offset=0, std::size_t write_offset=0)
 Copies a subset of another vertex buffer's data into this vertex buffer. More...
 
constexpr std::size_t size () const noexcept
 Returns the size of the buffer's data, in bytes. More...
 
constexpr buffer_usage usage () const noexcept
 Return's the buffer's usage hint. More...
 
 vertex_buffer (buffer_usage usage, std::size_t size, std::span< const std::byte > data={})
 Constructs a vertex buffer. More...
 
 vertex_buffer (buffer_usage usage, std::span< const std::byte > data={})
 Constructs a vertex buffer. More...
 
 vertex_buffer ()
 Constructs a vertex buffer. More...
 
void repurpose (buffer_usage usage, std::size_t size, std::span< const std::byte > data={})
 Repurposes the vertex buffer, changing its usage hint, size, and updating its data. More...
 
void repurpose (buffer_usage usage, std::span< const std::byte > data)
 Repurposes the vertex buffer, changing its usage hint, size, and updating its data. More...
 
void repurpose (buffer_usage usage)
 Repurposes the vertex buffer, changing its usage hint, size, and updating its data. More...
 
void resize (std::size_t size, std::span< const std::byte > data={})
 Resizes the vertex buffer. More...
 
void resize (std::span< const std::byte > data)
 Resizes the vertex buffer. More...
 
void write (std::size_t offset, std::span< const std::byte > data)
 Writes data into the vertex buffer. More...
 
void write (std::span< const std::byte > data)
 Writes data into the vertex buffer. More...
 
void read (std::size_t offset, std::span< std::byte > data) const
 Reads a subset of the buffer's data from the GL and returns it to the application. More...
 
void read (std::span< std::byte > data) const
 Reads a subset of the buffer's data from the GL and returns it to the application. More...
 

Friends

class pipeline
 

Detailed Description

Vertex buffer object (VBO).

Definition at line 32 of file vertex-buffer.hpp.

Constructor & Destructor Documentation

◆ vertex_buffer() [1/5]

gl::vertex_buffer::vertex_buffer ( buffer_usage  usage,
std::size_t  size,
std::span< const std::byte >  data = {} 
)

Constructs a vertex buffer.

Parameters
usageBuffer usage hint.
sizeBuffer size, in bytes.
dataBuffer data. If empty, buffer data will not be set.

@except std::out_of_range Vertex buffer construct operation exceeded data bounds.

Definition at line 43 of file vertex-buffer.cpp.

◆ vertex_buffer() [2/5]

gl::vertex_buffer::vertex_buffer ( buffer_usage  usage,
std::span< const std::byte >  data = {} 
)
inlineexplicit

Constructs a vertex buffer.

Parameters
usageBuffer usage hint.
sizeBuffer size, in bytes.
dataBuffer data. If empty, buffer data will not be set.

@except std::out_of_range Vertex buffer construct operation exceeded data bounds.

Definition at line 47 of file vertex-buffer.hpp.

◆ vertex_buffer() [3/5]

gl::vertex_buffer::vertex_buffer ( )
inline

Constructs a vertex buffer.

Parameters
usageBuffer usage hint.
sizeBuffer size, in bytes.
dataBuffer data. If empty, buffer data will not be set.

@except std::out_of_range Vertex buffer construct operation exceeded data bounds.

Definition at line 51 of file vertex-buffer.hpp.

◆ vertex_buffer() [4/5]

gl::vertex_buffer::vertex_buffer ( const vertex_buffer buffer)

Constructs a copy of a vertex buffer.

Parameters
bufferBuffer to copy.

Definition at line 61 of file vertex-buffer.cpp.

◆ vertex_buffer() [5/5]

gl::vertex_buffer::vertex_buffer ( vertex_buffer &&  buffer)

Move-constructs a vertex buffer.

Parameters
bufferBuffer to move.

Definition at line 67 of file vertex-buffer.cpp.

◆ ~vertex_buffer()

gl::vertex_buffer::~vertex_buffer ( )

Destroys a vertex buffer.

Definition at line 73 of file vertex-buffer.cpp.

Member Function Documentation

◆ copy()

void gl::vertex_buffer::copy ( const vertex_buffer read_buffer,
std::size_t  copy_size,
std::size_t  read_offset = 0,
std::size_t  write_offset = 0 
)

Copies a subset of another vertex buffer's data into this vertex buffer.

Parameters
read_bufferBuffer from which data will be read.
copy_sizeNumber of bytes to copy from the read buffer into this buffer.
read_offsetOffset into the read buffer's data, in bytes, where reading will begin.
write_offsetOffset into the this buffer's data, in bytes, where writing will begin.

@except std::out_of_range Vertex buffer copy operation exceeded read buffer bounds. @except std::out_of_range Vertex buffer copy operation exceeded write buffer bounds.

Definition at line 155 of file vertex-buffer.cpp.

◆ operator=() [1/2]

vertex_buffer & gl::vertex_buffer::operator= ( const vertex_buffer buffer)

Copies another vertex buffer.

Parameters
bufferBuffer to copy.
Returns
Reference to this vertex buffer.

Definition at line 81 of file vertex-buffer.cpp.

◆ operator=() [2/2]

vertex_buffer & gl::vertex_buffer::operator= ( vertex_buffer &&  buffer)

Moves another vertex buffer into this buffer.

Parameters
bufferBuffer to move.
Returns
Reference to this vertex buffer.

Definition at line 89 of file vertex-buffer.cpp.

◆ read() [1/2]

void gl::vertex_buffer::read ( std::size_t  offset,
std::span< std::byte >  data 
) const

Reads a subset of the buffer's data from the GL and returns it to the application.

Parameters
offsetOffset into the buffer's data, in bytes, where reading will begin.
dataData buffer where the read bytes will be stored.

@except std::out_of_range Vertex buffer read operation exceeded buffer bounds.

Definition at line 138 of file vertex-buffer.cpp.

◆ read() [2/2]

void gl::vertex_buffer::read ( std::span< std::byte >  data) const
inline

Reads a subset of the buffer's data from the GL and returns it to the application.

Parameters
offsetOffset into the buffer's data, in bytes, where reading will begin.
dataData buffer where the read bytes will be stored.

@except std::out_of_range Vertex buffer read operation exceeded buffer bounds.

Definition at line 162 of file vertex-buffer.hpp.

◆ repurpose() [1/3]

void gl::vertex_buffer::repurpose ( buffer_usage  usage)
inline

Repurposes the vertex buffer, changing its usage hint, size, and updating its data.

Parameters
usageNew buffer usage hint.
sizeNew buffer size, in bytes.
dataNew buffer data. If empty, buffer data will not be updated.

@except std::out_of_range Vertex buffer resize operation exceeded data bounds.

Definition at line 108 of file vertex-buffer.hpp.

◆ repurpose() [2/3]

void gl::vertex_buffer::repurpose ( buffer_usage  usage,
std::size_t  size,
std::span< const std::byte >  data = {} 
)

Repurposes the vertex buffer, changing its usage hint, size, and updating its data.

Parameters
usageNew buffer usage hint.
sizeNew buffer size, in bytes.
dataNew buffer data. If empty, buffer data will not be updated.

@except std::out_of_range Vertex buffer resize operation exceeded data bounds.

Definition at line 103 of file vertex-buffer.cpp.

◆ repurpose() [3/3]

void gl::vertex_buffer::repurpose ( buffer_usage  usage,
std::span< const std::byte >  data 
)
inline

Repurposes the vertex buffer, changing its usage hint, size, and updating its data.

Parameters
usageNew buffer usage hint.
sizeNew buffer size, in bytes.
dataNew buffer data. If empty, buffer data will not be updated.

@except std::out_of_range Vertex buffer resize operation exceeded data bounds.

Definition at line 103 of file vertex-buffer.hpp.

◆ resize() [1/2]

void gl::vertex_buffer::resize ( std::size_t  size,
std::span< const std::byte >  data = {} 
)
inline

Resizes the vertex buffer.

Parameters
sizeNew buffer size, in bytes.
dataNew buffer data. If empty, buffer data will not be updated.

@except std::out_of_range Vertex buffer resize operation exceeded data bounds.

Definition at line 123 of file vertex-buffer.hpp.

◆ resize() [2/2]

void gl::vertex_buffer::resize ( std::span< const std::byte >  data)
inline

Resizes the vertex buffer.

Parameters
sizeNew buffer size, in bytes.
dataNew buffer data. If empty, buffer data will not be updated.

@except std::out_of_range Vertex buffer resize operation exceeded data bounds.

Definition at line 128 of file vertex-buffer.hpp.

◆ size()

constexpr std::size_t gl::vertex_buffer::size ( ) const
inlineconstexprnoexcept

Returns the size of the buffer's data, in bytes.

Definition at line 182 of file vertex-buffer.hpp.

◆ usage()

constexpr buffer_usage gl::vertex_buffer::usage ( ) const
inlineconstexprnoexcept

Return's the buffer's usage hint.

Definition at line 188 of file vertex-buffer.hpp.

◆ write() [1/2]

void gl::vertex_buffer::write ( std::size_t  offset,
std::span< const std::byte >  data 
)

Writes data into the vertex buffer.

Parameters
offsetOffset into the buffer's data, in bytes, where writing will begin.
dataData to write into the buffer.

@except std::out_of_range Vertex buffer write operation exceeded buffer bounds.

Definition at line 121 of file vertex-buffer.cpp.

◆ write() [2/2]

void gl::vertex_buffer::write ( std::span< const std::byte >  data)
inline

Writes data into the vertex buffer.

Parameters
offsetOffset into the buffer's data, in bytes, where writing will begin.
dataData to write into the buffer.

@except std::out_of_range Vertex buffer write operation exceeded buffer bounds.

Definition at line 145 of file vertex-buffer.hpp.

Friends And Related Function Documentation

◆ pipeline

friend class pipeline
friend

Definition at line 194 of file vertex-buffer.hpp.


The documentation for this class was generated from the following files: