Cogs.Core
|
Provides buffer management functionality. More...
#include <IBuffers.h>
Public Member Functions | |
virtual void | annotate (BufferHandle handle, const StringView &name) |
Associate a name with an object for use in graphics debugging. | |
virtual void | annotate (VertexBufferHandle handle, const StringView &name) |
Associate a name with an object for use in graphics debugging. | |
virtual VertexBufferHandle | loadVertexBuffer (const void *vertexData, const size_t count, const VertexFormat &vertexFormat)=0 |
Loads a new vertex buffer and populates it with the given data. | |
virtual VertexBufferHandle | loadVertexBuffer (const void *vertexData, const size_t count, VertexFormatHandle vertexFormatHandle)=0 |
virtual void | releaseVertexBuffer (VertexBufferHandle vertexBufferHandle)=0 |
Release the vertex buffer with the given handle. | |
virtual IndexBufferHandle | loadIndexBuffer (const void *indexData, const size_t count, const size_t indexSize)=0 |
Loads a new index buffer and populates it with the given indexData. | |
virtual void | releaseIndexBuffer (IndexBufferHandle indexBufferHandle)=0 |
Releases the index buffer with the given handle. | |
virtual VertexArrayObjectHandle | loadVertexArrayObject (const EffectHandle effectHandle, const VertexBufferHandle *vertexBufferHandles, const size_t vertexBufferCount, const VertexFormat *const *vertexFormats=nullptr, const uint32_t *vertexBufferStrides=nullptr, const uint32_t *vertexBufferOffsets=nullptr, const IndexBufferHandle indexBufferHandle=IndexBufferHandle::NoHandle, uint32_t indexBufferStride=0)=0 |
Create a vertex array object that encapsulates binding of a set of vertex buffers and an optional index buffer. | |
virtual void | releaseVertexArrayObject (VertexArrayObjectHandle vertexArrayObjectHandle)=0 |
Releases the vertex array object with the given handle. | |
virtual InputLayoutHandle | loadInputLayout (const VertexFormatHandle *vertexFormats, const size_t count, EffectHandle effectHandle)=0 |
Loads a new input layout to map vertex flow between vertex buffers with the given vertexFormats to effects using the vertex layout of the given effectHandle. | |
virtual void | releaseInputLayout (InputLayoutHandle inputLayoutHandle)=0 |
Releases the input layout with the given inputLayoutHandle. | |
virtual BufferHandle | loadBuffer (const void *data, const size_t size, Usage::EUsage usage, uint32_t accessMode, uint32_t bindFlags, uint32_t stride=0)=0 |
Loads a new buffer using the given data to populate the buffer. | |
virtual VertexFormatHandle | createVertexFormat (const VertexElement *elements, size_t count)=0 |
virtual const VertexFormat * | getVertexFormat (VertexFormatHandle handle)=0 |
virtual void | retrieveSubBuffer (void *data, BufferHandle source, const size_t offset, const size_t size)=0 |
Retrieves the contents of a buffer. | |
virtual void | releaseBuffer (BufferHandle bufferHandle)=0 |
Releases the buffer with the given bufferHandle. | |
virtual void * | getNativeHandle (BufferHandle bufferHandle)=0 |
Get the device-specific handle (D3D buffer pointer, OpenGL buffer ID etc) associated with the given buffer handle. | |
virtual void | releaseResources ()=0 |
Releases all allocated buffer resources. | |
Provides buffer management functionality.
Definition at line 12 of file IBuffers.h.
|
inlinevirtual |
Associate a name with an object for use in graphics debugging.
Reimplemented in Cogs::BuffersD3D11, and Cogs::BuffersGL20.
Definition at line 17 of file IBuffers.h.
|
inlinevirtual |
Associate a name with an object for use in graphics debugging.
Reimplemented in Cogs::BuffersD3D11, and Cogs::BuffersGL20.
Definition at line 22 of file IBuffers.h.
|
pure virtual |
Get the device-specific handle (D3D buffer pointer, OpenGL buffer ID etc) associated with the given buffer handle.
bufferHandle | Valid handle to a previously created buffer object. |
Implemented in Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersNull, Cogs::BuffersGL20, Cogs::BuffersGLES30, Cogs::BuffersVK, and Cogs::BuffersWebGPU.
|
pure virtual |
Loads a new buffer using the given data to populate the buffer.
data | Pointer to data used to populate the buffer. Must be at least size number of bytes. |
size | Size of the buffer to create in bytes. |
usage | Usage flags for the buffer. Specifies how the buffer is intended to be used. |
accessMode | Access mode flags for the buffer. Specifies how the buffer can be accessed at a later time. |
bindFlags | Binding flags specifying how the buffer can be bound to the pipeline at a later state. |
Implemented in Cogs::BuffersNull, Cogs::BuffersWebGPU, Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersGL20, Cogs::BuffersGLES30, and Cogs::BuffersVK.
Referenced by Cogs::Core::Image360::RendererExtension::handleEvent(), Cogs::Core::PotreeRenderer::handleEvent(), and Cogs::EffectsGL20::loadComputeEffect().
|
pure virtual |
Loads a new index buffer and populates it with the given indexData.
The size of the buffer (if given) must be at least indexSize * count.
indexData | Pointer to index data in memory, or nullptr to initialize an empty index buffer. |
count | Number of indexes given. |
indexSize | Size of an index in bytes. |
Implemented in Cogs::BuffersNull, Cogs::BuffersWebGPU, Cogs::BuffersGL20, Cogs::BuffersGLES30, Cogs::BuffersVK, Cogs::BuffersD3D11, and Cogs::BuffersD3D12.
Referenced by Cogs::Core::SeaCurrentsRenderer::initialize(), and Cogs::Core::Volumetric::OctRenderer::initialize().
|
pure virtual |
Loads a new input layout to map vertex flow between vertex buffers with the given vertexFormats to effects using the vertex layout of the given effectHandle.
vertexFormats | Pointer to an array of pointers to vertex formats. One for each vertex buffer that in sum describes total vertex data. |
count | Number of vertex formats given. |
effectHandle | Handle to a valid effect containing a valid vertex shader. The input requirements of the vertex shader is used to specify the flow of vertex data from the vertex buffer(s) specified by vertexFormats into the shader stage. |
Implemented in Cogs::BuffersD3D12, Cogs::BuffersD3D11, Cogs::BuffersNull, Cogs::BuffersGL20, Cogs::BuffersGLES30, Cogs::BuffersVK, and Cogs::BuffersWebGPU.
|
pure virtual |
Create a vertex array object that encapsulates binding of a set of vertex buffers and an optional index buffer.
effectHandle | Effect to use this vao with. |
vertexBufferHandles | Pointer to an array containing the vertex buffer handles to use. |
vertexBufferCount | Number of vertex buffer handles. |
vertexBufferStrides | Pointer to an array of strides to use, one per vertex buffer, can be null or contain zero to use strides from buffer. |
vertexBufferOffsets | Pointer to an array of additional offsets to use, one per vertex buffer, can be null or contain zero to indicate no offset. |
indexBufferHandle | An optional handle to an index buffer. |
indexBufferStride | An optional stride to use for the index buffer, zero indicates using stride from buffer. |
Implemented in Cogs::BuffersGLES30, and Cogs::BuffersCommon.
|
pure virtual |
Loads a new vertex buffer and populates it with the given data.
The size of the buffer (if given) must be at least the size of a vertex in the given vertexFormat times count.
vertexData | Pointer to vertex data in memory, or nullptr to initialize an empty vertex buffer. |
count | Number of vertexes in the vertex data. |
vertexFormat | Format of the vertexes in the given memory buffer. |
Implemented in Cogs::BuffersNull, Cogs::BuffersWebGPU, Cogs::BuffersGL20, Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersGLES30, and Cogs::BuffersVK.
Referenced by Cogs::Core::Image360::RendererExtension::initialize(), and Cogs::Core::Volumetric::OctRenderer::initialize().
|
pure virtual |
Releases the buffer with the given bufferHandle.
bufferHandle | Valid handle to a previously created buffer. |
Implemented in Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersGLES30, Cogs::BuffersNull, Cogs::BuffersGL20, Cogs::BuffersVK, and Cogs::BuffersWebGPU.
|
pure virtual |
Releases the index buffer with the given handle.
indexBufferHandle | Valid handle to a previously created index buffer. |
Implemented in Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersGLES30, Cogs::BuffersNull, Cogs::BuffersGL20, Cogs::BuffersVK, and Cogs::BuffersWebGPU.
|
pure virtual |
Releases the input layout with the given inputLayoutHandle.
inputLayoutHandle | Valid handle to a previously created index buffer. |
Implemented in Cogs::BuffersNull, Cogs::BuffersVK, Cogs::BuffersWebGPU, Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersGLES30, and Cogs::BuffersGL20.
|
pure virtual |
Releases all allocated buffer resources.
Implemented in Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersGLES30, Cogs::BuffersNull, Cogs::BuffersGL20, Cogs::BuffersVK, and Cogs::BuffersWebGPU.
|
pure virtual |
Releases the vertex array object with the given handle.
vertexArrayObjectHandle | Valid handle created by loadVertexArrayObject. |
Implemented in Cogs::BuffersGLES30, and Cogs::BuffersCommon.
|
pure virtual |
Release the vertex buffer with the given handle.
The data is removed from GPU memory.
vertexBufferHandle | Valid handle to a previously created vertex buffer. |
Implemented in Cogs::BuffersD3D11, Cogs::BuffersD3D12, Cogs::BuffersNull, Cogs::BuffersGL20, Cogs::BuffersGLES30, Cogs::BuffersVK, and Cogs::BuffersWebGPU.
|
pure virtual |
Retrieves the contents of a buffer.
data | Pointer to where the data should be stored. |
offset | The offset in bytes inside the buffer from where to retrieve data. |
size | The number of bytes to retrieve from the buffer. |
Implemented in Cogs::BuffersD3D11, Cogs::BuffersNull, Cogs::BuffersWebGPU, Cogs::BuffersD3D12, Cogs::BuffersGL20, Cogs::BuffersGLES30, and Cogs::BuffersVK.