Index buffer for use with MGeometry.
This class represents an index buffer with a specific data type.
When retrieving an index buffer for binding to custom shaders (MPxShaderOverride), resourceHandle() may be called to get the device dependent handle to the index buffer on the GPU.
When creating an index buffer to supply geometric data to Maya (MPxGeometryOverride), acquire() may be called to get a pointer to a block of memory to fill with said data. Once filled, commit() must be called to apply the data to the buffer.
cgfxShaderNode.cpp, hwColorPerVertexShader.cpp, and hwPhongShader.cpp.
#include <MHWGeometry.h>
Public Member Functions |
|
MGeometry::DataType | dataType () const |
Get the data type of the buffer. |
|
unsigned int | size () const |
Get the size of the buffer in units of
dataType(). |
|
void * | resourceHandle () const |
Gets a graphics device dependent handle to
the vertex indexing data. |
|
void * | acquire (unsigned int size) |
Get a pointer to memory for the buffer.
|
|
void | commit (void *buffer) |
Commit the data stored in the memory given
by acquire() to
the buffer. |
|
Static Public Member Functions |
|
static const char * | className () |
Returns the name of this class. |
|
Friends |
|
class | MGeometry |
MGeometry::DataType dataType | ( | ) | const |
Get the data type of the buffer.
unsigned int size | ( | ) | const |
Get the size of the buffer in units of dataType().
Returns 0 if unallocated.
void * resourceHandle | ( | ) | const |
Gets a graphics device dependent handle to the vertex indexing data.
For OpenGL the return value is a pointer to an OpenGL identifier (GLuint) for a vertex buffer containing the indexing data. (e.g. using glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, handle)).
The index buffer identifier can be used to perform drawing of vertex buffer data identified by handles returned from MVertexBuffer::hwBuffer().
An example setup could be:
A NULL pointer will be returned if the graphics device dependent handle is not yet available.
If the pointer is not NULL, the value is only guaranteed to exist during the current draw. The value should never be cached or modified.
void * acquire | ( | unsigned int | size | ) |
Get a pointer to memory for the buffer.
This method is meant to be used in MPxGeometryOverride::populateGeometry() in order to provide data to Maya for drawing the associated object. The size of the buffer returned will be (size * sizeof(dataType())) bytes. The memory for the buffer is managed internally.
[in] | size | The size of the buffer to acquire |
void commit | ( | void * | buffer | ) |
const char * className | ( | ) | [static] |