Kanzi 4.0.0-beta2
kanzi::GPUBuffer Class Reference

Buffer abstraction. More...

#include <kanzi/core.ui/graphics3d/gpu_buffer.hpp>

Public Types

using NativeHandle
 Backend specific handle type.
 

Public Member Functions

gfx::BufferHandleGuard getHandle () const
 Gets the Kanzi graphics handle of the buffer.
 
size_t getSize () const
 Gets the size of the buffer.
 
gfx::BufferUsageFlag getUsage () const
 Gets the buffer usage.
 
 GPUBuffer ()=default
 Default constructor.
 
 GPUBuffer (GPUBuffer &&other) noexcept
 Move constructor.
 
 GPUBuffer (Renderer &renderer, gfx::BufferUsageFlag usage, ConstByteSpan data, string_view name)
 Constructor that initializes with data and uploads immediately.
 
 GPUBuffer (Renderer &renderer, gfx::BufferUsageFlag usage, size_t size, gfx::BufferHandleGuard handle, string_view name)
 Constructor that initializes from existing Kanzi graphics buffer.
 
 GPUBuffer (Renderer &renderer, gfx::BufferUsageFlag usage, size_t size, string_view name)
 Constructor that initializes as empty and without uploading.
 
GPUBufferoperator= (GPUBuffer &&other) noexcept
 Move operator.
 
void setData (Renderer &renderer, ConstByteSpan data, const bool shrinkToFit)
 Updates all data in the buffer.
 
void setSubData (Renderer &renderer, ConstByteSpan data, unsigned int offset)
 Updates a subsection of data in the buffer.
 

Static Public Attributes

static constexpr NativeHandle NativeHandleInvalid
 Invalid value to initialize native handles with.
 

Protected Member Functions

void resize (uint32_t size, ConstByteSpan initialData)
 Internal: resize the buffer with data.
 
void update (Renderer &renderer, uint32_t offset, ConstByteSpan data)
 Internal: replace the buffer in VRAM with new data.
 

Protected Attributes

gfx::BufferHandleGuard m_handle
 Internal GL name/handle wrapped with RAII semantics.
 
string m_name
 Name of the buffer.
 
uint32_t m_size
 Size of the buffer in bytes.
 
gfx::BufferUsageFlag m_usage
 Buffer usage flags.
 

Friends

void swap (GPUBuffer &lhs, GPUBuffer &rhs)
 Swaps buffer contents with each other.
 

Detailed Description

Buffer abstraction.

Since
Kanzi 4.0.0
  • Removed the m_type field.
  • Removed the getType function.

Member Typedef Documentation

◆ NativeHandle

Backend specific handle type.

For OpenGL that is GLuint (unsigned int).

Since
Kanzi 3.9.6

Constructor & Destructor Documentation

◆ GPUBuffer() [1/5]

kanzi::GPUBuffer::GPUBuffer ( )
explicitdefault

Default constructor.

◆ GPUBuffer() [2/5]

kanzi::GPUBuffer::GPUBuffer ( Renderer & renderer,
gfx::BufferUsageFlag usage,
size_t size,
string_view name )
explicit

Constructor that initializes as empty and without uploading.

Parameters
rendererThe renderer to use.
usageBuffer usage flags. Usually either vertex or index buffer.
sizeInitial size in bytes.
nameBuffer name.
Since
Kanzi 4.0.0
  • Added the name and usage parameters.
  • Removed the type parameter.

◆ GPUBuffer() [3/5]

kanzi::GPUBuffer::GPUBuffer ( Renderer & renderer,
gfx::BufferUsageFlag usage,
ConstByteSpan data,
string_view name )
explicit

Constructor that initializes with data and uploads immediately.

Parameters
rendererThe renderer to use.
usageBuffer usage flags. Usually either vertex or index buffer.
dataInitial data to upload.
nameBuffer name.
Since
Kanzi 4.0.0
  • Added the name and usage parameters.
  • Removed the type parameter.

◆ GPUBuffer() [4/5]

kanzi::GPUBuffer::GPUBuffer ( Renderer & renderer,
gfx::BufferUsageFlag usage,
size_t size,
gfx::BufferHandleGuard handle,
string_view name )
explicit

Constructor that initializes from existing Kanzi graphics buffer.

Parameters
rendererThe renderer to use.
usageBuffer usage flags. Usually either vertex or index buffer.
sizeInitial size in bytes.
handleKanzi graphics buffer handle.
nameBuffer name.
Since
Kanzi 3.9.6
Kanzi 4.0.0
  • Added the name and usage parameters.
  • Removed the type parameter.

◆ GPUBuffer() [5/5]

kanzi::GPUBuffer::GPUBuffer ( GPUBuffer && other)
inlinenoexcept

Move constructor.

Parameters
otherSource buffer.

Member Function Documentation

◆ getHandle()

gfx::BufferHandleGuard kanzi::GPUBuffer::getHandle ( ) const
inline

Gets the Kanzi graphics handle of the buffer.

Returns
The Kanzi graphics handle of the buffer.

◆ getSize()

size_t kanzi::GPUBuffer::getSize ( ) const
inline

Gets the size of the buffer.

Returns
Size of the buffer.

◆ getUsage()

gfx::BufferUsageFlag kanzi::GPUBuffer::getUsage ( ) const
inline

Gets the buffer usage.

Returns
Usage of the buffer.
Since
Kanzi 4.0.0

◆ setSubData()

void kanzi::GPUBuffer::setSubData ( Renderer & renderer,
ConstByteSpan data,
unsigned int offset )

Updates a subsection of data in the buffer.

Parameters
rendererPointer to the renderer being used.
dataThe new data.
offsetOffset in the buffer into which to update the data.

◆ setData()

void kanzi::GPUBuffer::setData ( Renderer & renderer,
ConstByteSpan data,
const bool shrinkToFit )

Updates all data in the buffer.

Parameters
rendererPointer to the renderer being used.
dataThe new data.
shrinkToFitWhether to allow the buffer to shrink, if the data size is smaller than the buffer size.

◆ operator=()

GPUBuffer & kanzi::GPUBuffer::operator= ( GPUBuffer && other)
inlinenoexcept

Move operator.

Parameters
otherSource buffer.
Returns
This object.

◆ resize()

void kanzi::GPUBuffer::resize ( uint32_t size,
ConstByteSpan initialData )
protected

Internal: resize the buffer with data.

Parameters
sizeNew size
initialDataNew data.

◆ update()

void kanzi::GPUBuffer::update ( Renderer & renderer,
uint32_t offset,
ConstByteSpan data )
protected

Internal: replace the buffer in VRAM with new data.

Parameters
rendererRenderer.
offsetOffset to update to.
dataNew data.

Friends And Related Symbol Documentation

◆ swap

void swap ( GPUBuffer & lhs,
GPUBuffer & rhs )
friend

Swaps buffer contents with each other.

Parameters
lhsLeft-hand side operand.
rhsRight-hand side operand.

Member Data Documentation

◆ NativeHandleInvalid

constexpr NativeHandle kanzi::GPUBuffer::NativeHandleInvalid
staticconstexpr

Invalid value to initialize native handles with.

Since
Kanzi 3.9.6

◆ m_handle

gfx::BufferHandleGuard kanzi::GPUBuffer::m_handle
protected

Internal GL name/handle wrapped with RAII semantics.

◆ m_usage

gfx::BufferUsageFlag kanzi::GPUBuffer::m_usage
protected

Buffer usage flags.

Since
Kanzi 4.0.0

◆ m_size

uint32_t kanzi::GPUBuffer::m_size
protected

Size of the buffer in bytes.

◆ m_name

string kanzi::GPUBuffer::m_name
protected

Name of the buffer.


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