glVertex3f принять массив в качестве аргумента?

Я пытаюсь реализовать карту высот в моем коде, но используемый массив кажется неправильным, и вершинная функция opengl не может его распознать, может ли кто-нибудь помочь мне с этим?

float* Createheightmap(int sizex, int sizez) {
float map[][] = new float[sizex][sizez];
for (int i = 0; i < sizex; i++) {
for (int j = 0; j < sizez; j++) {
map[i][j] = float(0.0);
}
}
return map;

}

void drawterrian(void) {
float* map=Createheightmap(sizex,sizez);
for (int i = 0; i < sizex; i++) {
for (int j = 0; j < sizez; j++) {
glBegin(GL_POLYGON);
glVertex3f(float(i),map[i][j],float(j));
glVertex3f(float(i+1),map[i+1][j],float(j));
glVertex3f(float(i+1),map[i+1][j+1],float(j+1));
glVertex3f(float(i),map[i][j+1],float(j+1));

glEnd();
}
}
}

Размер массива объявлен в более ранних функциях

-3

Решение

Я нашел аналогичная проблема к твоему. Вы назначаете нормаль к многоугольнику с glNormal в любом месте?

Еще одна вещь, которая будет проблемой, заключается в том, что вы выходите за пределы массива map с i+1 а также j+1 индексы в drawterrian, Изменить границы на вашем for петли, чтобы убедиться, что этого не произойдет.

Как упоминалось в комментариях, будьте осторожны при создании переменных с new, Убедись в delete их потом. Возможно, вам придется настроить ваш Createheightmap функционировать по-другому, чтобы сделать это.

0

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

Других решений пока нет …

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