Exemplo n.º 1
0
void GLHeightMap::build(RawHeightMap heightmap) {
    m_heightmap = heightmap;
    vertexNumber = heightmap.getWidth()*(heightmap.getHeight()-1)*2;
    vertexes = new Vertex[vertexNumber];
    float range = m_heightmap.getMaxHeight() - m_heightmap.getMinHeight();
    for (int i = 0; i < heightmap.getHeight(); i++) {
        for (int j = 0; j < heightmap.getWidth(); j++) {
            unsigned short int value = heightmap.getData()[i*heightmap.getWidth()+j];
            int offset = i*heightmap.getWidth()+j;
            vertexes[offset].x = i * m_scaleFactor * 8 * 1/m_heightmap.getRatio();
            vertexes[offset].y = (m_heightmap.getMinHeight()+value*range/MAX_SHORT)*m_scaleFactor;
            vertexes[offset].z = j * m_scaleFactor * 8 * 1/m_heightmap.getRatio();
        }
    }
    computeNormals();
    generateIndexes();
    generateTexCoords();
}
Exemplo n.º 2
0
void cwEdgeTile::generate()  {
    generateVertex();
    generateIndexes();
}