glVertex3f以数组作为参数?

时间:2016-11-09 16:28:28

标签: c++ opengl heightmap

我正在尝试为我的代码实现高度图,但是我使用的数组似乎是错误的并且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();
        }
    }
}

数组的大小在早期函数中声明

1 个答案:

答案 0 :(得分:0)

我找到了similar problem给你。您是否在任何地方为glNormal指定了多边形的法线?

另一个问题是,您使用map中的i+1j+1索引超出了数组drawterrian的范围。修改for循环的边界以确保不会发生这种情况。

如评论中所述,使用new创建变量时要小心。确保事后delete他们。您可能需要以不同的方式调整Createheightmap功能。