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 - Number of the slot.
void unbindCompute ( int unit ) #
Unbinds the StructuredBuffer from the compute shader type.Arguments
- int unit - Number of the slot.
void bindControl ( int unit ) #
Binds the StructuredBuffer to the tesselation control (hull) shader type.Arguments
- int unit - Number of the slot.
void unbindControl ( int unit ) #
Unbinds the StructuredBuffer from the tesselation control (hull) shader type.Arguments
- int unit - Number of the slot.
void bindEvaluate ( int unit ) #
Binds the StructuredBuffer to the tesselation evaluation (domain) shader type.Arguments
- int unit - Number of the slot.
void unbindEvaluate ( int unit ) #
Unbinds the StructuredBuffer from the tesselation evaluation (domain) shader type.Arguments
- int unit - Number of the slot.
void bindFragment ( int unit ) #
Binds the StructuredBuffer to the fragment shader type.Arguments
- int unit - Number of the slot.
void unbindFragment ( int unit ) #
Unbinds the StructuredBuffer from the fragment shader type.Arguments
- int unit - Number of the slot.
void bindGeometry ( int unit ) #
Binds the StructuredBuffer to the geometry shader type.Arguments
- int unit - Number of the slot.
void unbindGeometry ( int unit ) #
Unbinds the StructuredBuffer from the geometry shader type.Arguments
- int unit - Number of the slot.
void bindVertex ( int unit ) #
Binds the StructuredBuffer to the vertex shader type.Arguments
- int unit - 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.int create ( int flags, unsigned int structure_size, unsigned int num_elements ) #
Constructor. Creates a new structured buffer with the specified parameters.Arguments
- int flags - StructuredBuffer flag.
- 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 unbindVertex ( int unit ) #
Unbinds the StructuredBuffer from the vertex shader type.Arguments
- int unit - Number of the slot.
Last update:
2019-08-16
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)