void SimpleExampleApp::update() { // Update particles float t = getElapsedSeconds(); mParticles.getPositionAt( 0 ).x = sin( t )*4.0f; mParticles.getPositionAt( 1 ).x = cos( t )*4.0f; mParticles.getPositionAt( 2 ).y = sin( t*2.0f )*4.0f; // Polygonize mTriMesh.clear(); mPolygonizer.polygonize( &mTriMesh ); }
void TerrainApp::generateTerrain() { mTriMesh.clear(); for ( int y = 0; y < ySize; ++y ) { for ( int x = 0; x < xSize; ++x ) { addQuad( x, y ); } } }
BaseMeshRef SimpleMesh::generateQuad(Rectf dimensions, Rectf uvCoords = Rectf(0.0f, 0.0f, 1.0f, 1.0f)) { // cout << "SimpleMesh::GenerateQuad(); dims: " << dimensions // << " uvCoords: " << uvCoords << endl; TriMesh mesh; mesh.clear(); // Vertexes mesh.appendVertex(Vec3f(dimensions.x1, dimensions.y1, 0)); mesh.appendVertex(Vec3f(dimensions.x1, dimensions.y2, 0)); mesh.appendVertex(Vec3f(dimensions.x2, dimensions.y2, 0)); mesh.appendVertex(Vec3f(dimensions.x2, dimensions.y1, 0)); // Vertex Colors mesh.appendColorRgb(Color(1.0f, 1.0f, 1.0f)); mesh.appendColorRgb(Color(1.0f, 1.0f, 1.0f)); mesh.appendColorRgb(Color(1.0f, 1.0f, 1.0f)); mesh.appendColorRgb(Color(1.0f, 1.0f, 1.0f)); // Tex coords mesh.appendTexCoord(Vec2f(uvCoords.x1, uvCoords.y1)); mesh.appendTexCoord(Vec2f(uvCoords.x1, uvCoords.y2)); mesh.appendTexCoord(Vec2f(uvCoords.x2, uvCoords.y2)); mesh.appendTexCoord(Vec2f(uvCoords.x2, uvCoords.y1)); int vert0 = mesh.getNumVertices() - 4; int vert1 = mesh.getNumVertices() - 1; int vert2 = mesh.getNumVertices() - 2; int vert3 = mesh.getNumVertices() - 3; mesh.appendTriangle(vert0, vert1, vert3); mesh.appendTriangle(vert3, vert1, vert2); mesh.recalculateNormals(); SimpleMeshRef meshWrapper = make_shared<SimpleMesh>(mesh); meshWrapper->_bounds = mesh.calcBoundingBox(); return dynamic_pointer_cast<BaseMesh>(meshWrapper); }