我正在尝试为我的代码实现高度图,但是我使用的数组似乎是错误的并且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();
}
}
}
数组的大小在早期函数中声明
答案 0 :(得分:0)
我找到了similar problem给你。您是否在任何地方为glNormal指定了多边形的法线?
另一个问题是,您使用map
中的i+1
和j+1
索引超出了数组drawterrian
的范围。修改for
循环的边界以确保不会发生这种情况。
如评论中所述,使用new
创建变量时要小心。确保事后delete
他们。您可能需要以不同的方式调整Createheightmap
功能。