Я пытаюсь создать ландшафт, который принимает значения высоты из текст файл .
Во время моих поисков я понял, что, как правило, местности создаются из ВМР файлы или другой вид изображения, принимая значения из пикселей. Я прочитал значения высоты из файла в 2d массив.
void File(){
FILE* file = fopen("data.txt", "r"); // data.txt opened with read only mode to get heights
int i,j;
for (i = 0; i < 17; i++){
for (j = 0; j < 21; j++){
fscanf(file, "%d", &data[i][j]);
}
}
fclose(file);
}
а затем загрузить эти значения в вершину, чтобы создать треугольник.
Но везде есть треугольники, когда я меняю x y z
ценности .
Предполагаемый проект — создать ландшафт.
Есть ли особый способ или код для создания ландшафта, используя только значения высоты из текст файл?
OpenGL отображает примитивы, такие как треугольники и треугольные полосы. Вам нужно будет преобразовать карту высот местности в примитивы, которые понимает OpenGL.
Возможно, это руководство поможет вам быстро найти его в Google.
http://www.codeproject.com/Articles/14154/OpenGL-Terrain-Generation-An-Introduction
В зависимости от того, как данные выглядят в карте высот, произнесите их в формате вершины / высоты.
Вы можете прочитать в строке, скажем, его
v 1.7/2.1/3.7 h 10
сохранить от вершины и перевести эту вершину на 10 (высота).
Повторите для каждой вершины и соедините их гранями.
Если это просто значения высоты, то вы можете заменить произвольные вершины на каждое значение высоты.
И.Е.
высот:
h 10
h 20
h 30
Тогда как функция:
void generateTerrain(int length, int width)
{
for(;length>= 0; --length)
{
for(; width >= 0; --width)
{
//read line from file
//store the height in a temp hieght variable
//createVertex(length, width, height);
//store this vertex somewhere for later
}
}
}
Возможно, есть более эффективные способы сделать это, но для простой генерации ландшафта, которая просто всплыла в моей голове 🙂