制作高度图的另一种方法

时间:2011-11-11 22:16:41

标签: c opengl

我正在考虑使用随机生成的值创建一个2x2数组,然后使用glVertex3i绘制,例如:

glBegin(GL_POLYGON);
int x = 5;
int z = 5;
for (int i=0; i<width; i++)
{
    for (int j=0; j<height; j++)
    {
        glVertex3i(x, heightmap[i][j], z);
    }
    x -= 0.5;
    z -= 0.5;
}
glEnd();

我遇到的唯一问题是,我认为地图不是在z维度上绘制的,因为我得到的只是1方面。

可能有什么问题?显然这个算法现在是基本的,但它只是一个起点。

2 个答案:

答案 0 :(得分:4)

  

可能出现什么问题?

让我们从这里开始:

glBegin(GL_POLYGON);

多边形必需是平面的。所有顶点必须位于单个平面中。如果他们不这样做,那么OpenGL不负责它的呈现方式。您不能将高度图绘制为单个多边形,并期望获得合理的结果。您必须使用一系列GL_TRIANGLE_STRIPGL_TRIANGLES来绘制三角形。

然后,克里斯蒂安说了。

答案 1 :(得分:3)

也许你的意思是

float x = 5.0f;
for (int i=0; i<width; i++)
{
    float z = 5.0f;
    for (int j=0; j<height; j++)
    {
        glVertex3f(x, heightmap[i][j], z);
        z -= 0.5f;
    }
    x -= 0.5f;
}

或者xz已切换,取决于您的约定。但首先,不要从int中减去0.5,它会绘制两次相同的顶点。第二,一个变量需要在内部循环中运行,另一个变量需要在外部循环中运行。或者我是否误解了这个问题?

你确定要整个高度图组成一个多边形吗?也许我真的误解了这个问题?