OPENGL Terrain из текстового файла

Я пытаюсь создать ландшафт, который принимает значения высоты из текст файл .

Во время моих поисков я понял, что, как правило, местности создаются из ВМР файлы или другой вид изображения, принимая значения из пикселей. Я прочитал значения высоты из файла в 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 ценности .

Предполагаемый проект — создать ландшафт.

Есть ли особый способ или код для создания ландшафта, используя только значения высоты из текст файл?

0

Решение

OpenGL отображает примитивы, такие как треугольники и треугольные полосы. Вам нужно будет преобразовать карту высот местности в примитивы, которые понимает OpenGL.

Возможно, это руководство поможет вам быстро найти его в Google.
http://www.codeproject.com/Articles/14154/OpenGL-Terrain-Generation-An-Introduction

4

Другие решения

В зависимости от того, как данные выглядят в карте высот, произнесите их в формате вершины / высоты.

Вы можете прочитать в строке, скажем, его

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
}
}
}

Возможно, есть более эффективные способы сделать это, но для простой генерации ландшафта, которая просто всплыла в моей голове 🙂

1

По вопросам рекламы [email protected]