Exemple #1
0
/// remove vertex with given index
void GLData::removeVertex( unsigned int vertexIdx ) {
    // i) for each polygon of this vertex, call remove_polygon:
    typedef std::set< unsigned int, std::greater<unsigned int> > PolygonSet;
    PolygonSet pset = vertexDataArray[vertexIdx].polygons;
    BOOST_FOREACH( unsigned int polygonIdx, pset ) {
        removePolygon( polygonIdx );
    }
Exemple #2
0
void GLData::removeVertex( unsigned int vertexIdx ) {
    //std::cout << "GLData::removeVertex( " << vertexIdx << " )\n";
    
    // i) for each polygon of this vertex, call remove_polygon:
    BOOST_FOREACH( unsigned int polygonIdx, vertexDataArray[vertexIdx].polygons ) {
        removePolygon( polygonIdx );
    }
    // ii) overwrite with last vertex:
    unsigned int lastIdx = vertexArray.size()-1;
    if (vertexIdx != lastIdx) {
        vertexArray[vertexIdx] = vertexArray[lastIdx];
        vertexDataArray[vertexIdx] = vertexDataArray[lastIdx];
        // notify octree-node with new index here!
        // vertex that was at lastIdx is now at vertexIdx
        vertexDataArray[vertexIdx].node->swapIndex( lastIdx, vertexIdx );
        
        // request each polygon to re-number this vertex.
        BOOST_FOREACH( unsigned int polygonIdx, vertexDataArray[vertexIdx].polygons ) {
            unsigned int idx = polygonIdx*polyVerts;
            for (int m=0;m<polyVerts;++m) {
                if ( indexArray[ idx+m ] == lastIdx )
                    indexArray[ idx+m ] = vertexIdx;
            }
        }
    }
Exemple #3
0
GLRenderer::~GLRenderer() {
    glDeleteBuffers(1, &m_ParticleVBO);
    glDeleteVertexArrays(1, &m_ParticleVAO);

    for(size_t i = 0; i < m_PolygonVBOs.size(); ++i) {
        removePolygon(i);
    }
}
Exemple #4
0
void MeshBuilder::removePolygons()
{
	for ( int i = polygons()-1 ; i >= 0 ; --i )
		removePolygon(i);
}