我正在考虑使用随机生成的值创建一个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方面。
可能有什么问题?显然这个算法现在是基本的,但它只是一个起点。
答案 0 :(得分:4)
可能出现什么问题?
让我们从这里开始:
glBegin(GL_POLYGON);
多边形必需是平面的。所有顶点必须位于单个平面中。如果他们不这样做,那么OpenGL不负责它的呈现方式。您不能将高度图绘制为单个多边形,并期望获得合理的结果。您必须使用一系列GL_TRIANGLE_STRIP
或GL_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;
}
或者x
和z
已切换,取决于您的约定。但首先,不要从int中减去0.5,它会绘制两次相同的顶点。第二,一个变量需要在内部循环中运行,另一个变量需要在外部循环中运行。或者我是否误解了这个问题?
你确定要整个高度图组成一个多边形吗?也许我真的误解了这个问题?