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(); }
void cwEdgeTile::generate() { generateVertex(); generateIndexes(); }