Vertex array objects (Vaos) are immutable objects that describe a combination of vertex buffers and index buffer with a given operation type.
More...
|
| VertexArrayObject (uint32 vaoName, uint32 renderQueueId, uint16 inputLayoutId, const VertexBufferPackedVec &vertexBuffers, IndexBufferPacked *indexBuffer, OperationType operationType) |
|
VertexArrayObject * | clone (VaoManager *vaoManager, SharedVertexBufferMap *sharedBuffers, int vertexBufferType=-1, int indexBufferType=-1) const |
| Clones the vertex & index buffers and creates a new VertexArrayObject.
|
|
const VertexElement2 * | findBySemantic (VertexElementSemantic semantic, size_t &outIndex, size_t &outOffset, size_t repeat=0) const |
| Returns the entire VertexElement2 descriptor in the vertex buffers.
|
|
VertexBufferPacked * | getBaseVertexBuffer (void) const |
|
IndexBufferPacked * | getIndexBuffer (void) const |
|
uint16 | getInputLayoutId (void) const |
|
OperationType | getOperationType (void) const |
|
uint32 | getPrimitiveCount (void) const |
|
uint32 | getPrimitiveStart (void) const |
|
uint32 | getRenderQueueId (void) const |
|
uint32 | getVaoName (void) const |
|
const VertexBufferPackedVec & | getVertexBuffers (void) const |
|
VertexElement2VecVec | getVertexDeclaration (void) const |
| Gets the combined vertex declaration of all the vertex buffers.
|
|
void | operator delete (void *ptr) |
|
void | operator delete (void *ptr, const char *, int, const char *) |
|
void | operator delete (void *ptr, void *) |
|
void | operator delete[] (void *ptr) |
|
void | operator delete[] (void *ptr, const char *, int, const char *) |
|
void * | operator new (size_t sz) |
|
void * | operator new (size_t sz, const char *file, int line, const char *func) |
| operator new, with debug line info
|
|
void * | operator new (size_t sz, void *ptr) |
| placement operator new
|
|
void * | operator new[] (size_t sz) |
|
void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
| array operator new, with debug line info
|
|
void | readRequests (ReadRequestsArray &requests, size_t elementStart=0, size_t elementCount=0, bool skipRequestIfBufferHasShadowCopy=false) |
| Utility to get multiple pointers & read specific elements of the vertex, even if they're in separate buffers.
|
|
void | setPrimitiveRange (uint32 primStart, uint32 primCount) |
| Limits the range of triangle primitives that is rendered.
|
|
Vertex array objects (Vaos) are immutable objects that describe a combination of vertex buffers and index buffer with a given operation type.
Once created, they can't be modified. You have to destroy them and create a new one.
Utility to get multiple pointers & read specific elements of the vertex, even if they're in separate buffers.
When two elements share the same buffer, only one ticket is created.
Example usage: VertexArrayObject::ReadRequestsArray requests; requests.push_back( VertexArrayObject::ReadRequests( VES_POSITION ) ); requests.push_back( VertexArrayObject::ReadRequests( VES_NORMALS ) ); vao->readRequests( requests ); vao->mapAsyncTickets( requests );
for( size_t i=0; i<numVertices; ++i ) { float const position = reinterpret_cast<const float>( requests[0].data ); float const normals = reinterpret_cast<const float>( requests[1].data );
requests[0].data += requests[0].vertexBuffer->getBytesPerElement(); requests[1].data += requests[1].vertexBuffer->getBytesPerElement(); }
vao->unmapAsyncTickets( requests );
- Parameters
-
requests | [in/out] Array filled with the semantic. |
skipRequestIfBufferHasShadowCopy | Avoid generating the AsyncTicket if the buffer has a shadow copy. Useful if you want to read directly from the shadow copy instead of downloading from the GPU. The 'data' variable will be filled immediately if there's a shadow copy available, and mapAsyncTickets can be safely called even if skipRequestIfBufferHasShadowCopy=true |