void CC3Billboard::populateAsBoundingRectangle() { CC3Vector* vertices; // Array of simple vertex location data // Start with default initial values GLfloat xMin = 0.0f; GLfloat xMax = 1.0f; GLfloat yMin = 0.0f; GLfloat yMax = 1.0f; int vCount = 4; CC3VertexLocations* locArray = CC3VertexLocations::vertexArray(); locArray->setDrawingMode( GL_TRIANGLE_STRIP ); // Location array will do the drawing as a strip locArray->setVertexStride( 0 ); // Tightly packed locations only locArray->setElementOffset( 0 ); // Only locations locArray->setAllocatedVertexCapacity( vCount ); vertices = (CC3Vector*)locArray->getVertices(); // Populate vertex locations in the X-Y plane vertices[0] = cc3v(xMax, yMax, 0.0f); vertices[1] = cc3v(xMin, yMax, 0.0f); vertices[2] = cc3v(xMax, yMin, 0.0f); vertices[3] = cc3v(xMin, yMin, 0.0f); // Create mesh with vertex location array CC3Mesh* aMesh = CC3Mesh::mesh(); aMesh->setVertexLocations( locArray ); setMesh( aMesh ); updateBoundingMesh(); }
void CC3ShadowVolumeMeshNode::createShadowMesh() { GLuint vertexCount = getShadowCaster()->getVertexCount(); // Create vertexLocation array. CC3VertexLocations* locArray = CC3VertexLocations::vertexArray(); locArray->setDrawingMode( GL_TRIANGLES ); locArray->setElementSize( 4 ); // We're using homogeneous coordinates! locArray->setAllocatedVertexCapacity( vertexCount ); locArray->setVertexCount( 0 ); // Will be populated dynamically locArray->setShouldReleaseRedundantContent( false ); // Shadow vertex data is dynamic CC3Mesh* aMesh = CC3Mesh::mesh(); aMesh->setVertexLocations( locArray ); setMesh( aMesh ); }