| GeometricShape Default geometry shapes | |
| getGeometry ( const MDagPath & shape, const MGeometryRequirements & requirements, MObject * components = NULL) | |
| referenceDefaultGeometry (const MGeometryManager::GeometricShape geomShape, const MGeometryRequirements & requirements) | |
| dereferenceDefaultGeometry ( MGeometryList * data) |
{
// Set up a NULL path
MDagPath path;
// Get the requirements from the hardware shader
MGeometryRequirements requirements;
populateRequirements(path, requirements);
// Ask for a default sphere
MGeometryManager::GeometricShape shape = MGeometryManager::kDefaultSphere;
MGeometryList* geomIter = MGeometryManager::referenceDefaultGeometry(shape, requirements);
if(geomIter == NULL) {
return MStatus::kFailure;
}
// Set up where to draw to ....
// Now draw using the geometry iterator returned.
//
for( ; !geomIter->isDone(); geomIter->next())
{
// Get the current geometry
MGeometry& geometry = geomIter->geometry(MGeometryList::kNone);
// Get the current object to world matrix
const MMatrix& mtm = geomIter->objectToWorldMatrix();
glMatrixMode(GL_MODELVIEW);
glLoadMatrixd(mtm[0]);
// Get some data tro draw
MGeometryPrimitive primitives = geometry.primitiveArray(0);
const MGeometryData pos = geometry.position();
const MGeometryData normal = geometry.normal();
if (pos.data() != NULL && primitives.data() != NULL)
{
// Set up position and normals for drawing
//
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, (float*) pos.data());
if (normal.data()) {
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, normal.data());
}
// Draw with the current indexing structure
MGeometryPrimitive primitives = geometry.primitiveArray(0);
glDrawElements(GL_TRIANGLES, primitives.elementCount(), GL_UNSIGNED_INT, primitives.data());
glDisableClientState(GL_VERTEX_ARRAY);
if (normal.data())
glDisableClientState(GL_NORMAL_ARRAY);
}
}
// Now dereference the geometry iterator used.
MGeometryManager::dereferenceDefaultGeometry(geomIter);
}
Arguments | Autodesk® Maya® 2008 © 1997-2007 Autodesk, Inc. All rights reserved. | doc++ Copyright |