void Controller::createSphere( gl::VboMesh &vbo, int res ) { float X = 0.525731112119f; float Z = 0.850650808352f; static Vec3f verts[12] = { Vec3f( -X, 0.0f, Z ), Vec3f( X, 0.0f, Z ), Vec3f( -X, 0.0f, -Z ), Vec3f( X, 0.0f, -Z ), Vec3f( 0.0f, Z, X ), Vec3f( 0.0f, Z, -X ), Vec3f( 0.0f, -Z, X ), Vec3f( 0.0f, -Z, -X ), Vec3f( Z, X, 0.0f ), Vec3f( -Z, X, 0.0f ), Vec3f( Z, -X, 0.0f ), Vec3f( -Z, -X, 0.0f ) }; static GLuint triIndices[20][3] = { {0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1}, {8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3}, {7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6}, {6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} }; gl::VboMesh::Layout layout; layout.setStaticPositions(); layout.setStaticNormals(); mPosCoords.clear(); mNormals.clear(); for( int i=0; i<20; i++ ){ drawSphereTri( verts[triIndices[i][0]], verts[triIndices[i][1]], verts[triIndices[i][2]], res ); } vbo = gl::VboMesh( mPosCoords.size(), 0, layout, GL_TRIANGLES ); vbo.bufferPositions( mPosCoords ); vbo.bufferNormals( mNormals ); }
void RepulsionApp::createSphere( gl::VboMesh &vbo, int res ) { float X = 0.525731112119f; float Z = 0.850650808352f; static Vec3f verts[12] = { Vec3f( -X, 0.0f, Z ), Vec3f( X, 0.0f, Z ), Vec3f( -X, 0.0f, -Z ), Vec3f( X, 0.0f, -Z ), Vec3f( 0.0f, Z, X ), Vec3f( 0.0f, Z, -X ), Vec3f( 0.0f, -Z, X ), Vec3f( 0.0f, -Z, -X ), Vec3f( Z, X, 0.0f ), Vec3f( -Z, X, 0.0f ), Vec3f( Z, -X, 0.0f ), Vec3f( -Z, -X, 0.0f ) }; static GLuint triIndices[20][3] = { {0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1}, {8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3}, {7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6}, {6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} }; gl::VboMesh::Layout layout; layout.setStaticPositions(); layout.setStaticNormals(); layout.setStaticColorsRGB(); mPosCoords.clear(); mNormals.clear(); mColors.clear(); float invWidth = 1.0f/(float)FBO_WIDTH; float invHeight = 1.0f/(float)FBO_HEIGHT; for( int x = 0; x < FBO_WIDTH; ++x ) { for( int y = 0; y < FBO_HEIGHT; ++y ) { float u = ( (float)x + 0.5f ) * invWidth; float v = ( (float)y + 0.5f ) * invHeight; Colorf c = Colorf( u, v, 0.0f ); for( int i=0; i<20; i++ ){ drawSphereTri( verts[triIndices[i][0]], verts[triIndices[i][1]], verts[triIndices[i][2]], res, c ); } } } vbo = gl::VboMesh( mPosCoords.size(), 0, layout, GL_TRIANGLES ); vbo.bufferPositions( mPosCoords ); vbo.bufferNormals( mNormals ); vbo.bufferColorsRGB( mColors ); vbo.unbindBuffers(); }
void Controller::createSphere( gl::VboMesh &vbo, int res ) { float X = 0.525731112119f; float Z = 0.850650808352f; static Vec3f verts[12] = { Vec3f( -X, 0.0f, Z ), Vec3f( X, 0.0f, Z ), Vec3f( -X, 0.0f, -Z ), Vec3f( X, 0.0f, -Z ), Vec3f( 0.0f, Z, X ), Vec3f( 0.0f, Z, -X ), Vec3f( 0.0f, -Z, X ), Vec3f( 0.0f, -Z, -X ), Vec3f( Z, X, 0.0f ), Vec3f( -Z, X, 0.0f ), Vec3f( Z, -X, 0.0f ), Vec3f( -Z, -X, 0.0f ) }; static GLuint triIndices[20][3] = { {0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1}, {8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3}, {7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6}, {6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} }; gl::VboMesh::Layout layout; layout.setStaticPositions(); layout.setStaticNormals(); mPosCoords.clear(); mNormals.clear(); for( int i=0; i<20; i++ ){ drawSphereTri( verts[triIndices[i][0]], verts[triIndices[i][1]], verts[triIndices[i][2]], res ); } float z = 0.0f; float s = 0.05f; float y1 = -0.975f; float y2 = -1.1f; Vec3f v0 = Vec3f( z, y1, z ); Vec3f v1 = Vec3f( s, y2, s ); Vec3f v2 = Vec3f(-s, y2, s ); Vec3f v3 = Vec3f(-s, y2,-s ); Vec3f v4 = Vec3f( s, y2,-s ); mPosCoords.push_back( v1 ); // back mPosCoords.push_back( v2 ); mPosCoords.push_back( v0 ); mPosCoords.push_back( v4 ); // right mPosCoords.push_back( v1 ); mPosCoords.push_back( v0 ); mPosCoords.push_back( v3 ); // front mPosCoords.push_back( v4 ); mPosCoords.push_back( v0 ); mPosCoords.push_back( v2 ); // left mPosCoords.push_back( v3 ); mPosCoords.push_back( v0 ); mPosCoords.push_back( v1 ); // bottom mPosCoords.push_back( v2 ); mPosCoords.push_back( v3 ); mPosCoords.push_back( v1 ); // bottom mPosCoords.push_back( v3 ); mPosCoords.push_back( v4 ); mNormals.push_back( Vec3f::zAxis() ); // back mNormals.push_back( Vec3f::zAxis() ); mNormals.push_back( Vec3f::zAxis() ); mNormals.push_back( Vec3f::xAxis() ); // right mNormals.push_back( Vec3f::xAxis() ); mNormals.push_back( Vec3f::xAxis() ); mNormals.push_back(-Vec3f::zAxis() ); // front mNormals.push_back(-Vec3f::zAxis() ); mNormals.push_back(-Vec3f::zAxis() ); mNormals.push_back( Vec3f::xAxis() ); // left mNormals.push_back( Vec3f::xAxis() ); mNormals.push_back( Vec3f::xAxis() ); mNormals.push_back( Vec3f::yAxis() ); // bottom mNormals.push_back( Vec3f::yAxis() ); mNormals.push_back( Vec3f::yAxis() ); mNormals.push_back( Vec3f::yAxis() ); // bottom mNormals.push_back( Vec3f::yAxis() ); mNormals.push_back( Vec3f::yAxis() ); vbo = gl::VboMesh( mPosCoords.size(), 0, layout, GL_TRIANGLES ); vbo.bufferPositions( mPosCoords ); vbo.bufferNormals( mNormals ); }