Unigine::StructuredBuffer Class
Header: | #include <UnigineTextures.h> |
StructuredBuffer is a buffer for structures: it represents a uniform array of structures.
StructuredBuffer resource can specified via the following flags:
- GPU_RESOURCE specifies a resource that can be read and written by the GPU. It also creates a temporary direct staging buffer to copy the data from the main buffer and gets the data by the CPU.
- IMMUTABLE specifies a resources that can only be read by the GPU. It also creates a temporary direct staging buffer to copy the data from the main buffer and gets the data by the CPU.
- CPU_RESOURCE specifies a resource that is accessible by both the GPU (read only mode) and the CPU (write only mode). It also creates a temporary direct staging buffer to copy the data from the main buffer and gets the data by the CPU.
- STAGING specifies a resource that supports direct data transfer from the GPU to CPU.
See Also#
- StructuredBuffer C++ sample provided in the Samples (Samples -> C++ -> Render) section of UNIGINE SDK Browser.
StructuredBuffer Class
Members
void * getD3D11ShaderResourceView( )
Gets a shader-resource view that specifies the subresources a shader can access during rendering.Return value
A pointer to D3D11 shader resource view.void * getD3D11UnorderedAccessView( )
Gets a view for an unordered access resource that specifies the parts of a resource the pipeline can access during rendering.Return value
A pointer to a D3D11 unordered access view.int getData( void * data )
Gets the data from StructuredBuffer instance.Arguments
- void * data - A pointer to the data.
Return value
1 if StructuredBuffer data was returned; otherwise, 0.int getGLBufferID( )
Returns the Id of buffer.Return value
An Id of the buffer.void bindCompute( int unit )
Binds the StructuredBuffer to the compute shader type.Arguments
- int unit - The number of the slot.
void bindFragment( int unit )
Binds the StructuredBuffer to the fragment shader type.Arguments
- int unit - The number of the slot.
void bindVertex( int unit )
Binds the StructuredBuffer to the vertex shader type.Arguments
- int unit - The number of the slot.
void clear( )
Clears smart pointer.Ptr<StructuredBuffer> create( )
Creates a smart pointer to the StructuredBuffer.StructuredBufferPtr input_buffer = StructuredBuffer::create();
int create( int flags, void * data, unsigned int structure_size, unsigned int num_elements )
Creates a StructuredBuffer instance with specified parameters.#define NUMBERS_COUNT 4096 * 8192
// Input data structure
struct InputDataStructure {
vec4 vector0;
vec4 vector1;
};
// Source data
InputDataStructure *source_data = new InputDataStructure[NUMBERS_COUNT];
// Create immutable structure buffer (gpu_read-only) and store initial values
StructuredBufferPtr input_buffer = StructuredBuffer::create();
input_buffer->create(StructuredBuffer::IMMUTABLE, source_data, sizeof(InputDataStructure), NUMBERS_COUNT);
Arguments
- int flags - StructuredBuffer flag.
- void * data - Pointer to the source data.
- unsigned int structure_size - The size of the structured buffer.
- unsigned int num_elements - Number of elements in structured buffer.
Return value
1 if the StructuredBuffer was created successfully; otherwise, 0.void destroy( )
Destroys smart pointer.void unbindCompute( int unit )
Unbinds the StructuredBuffer from the compute shader type.Arguments
- int unit - The number of the slot.
void unbindFragment( int unit )
Unbinds the StructuredBuffer from the fragment shader type.Arguments
- int unit - The number of the slot.
void unbindVertex( int unit )
Unbinds the StructuredBuffer from the vertex shader type.Arguments
- int unit - The number of the slot.
Last update:
2020-01-14
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)