我正在尝试制作地形网格,现在有这样的东西:
GL.PushMatrix();
GL.Begin(BeginMode.TriangleStrip);
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
GL.Vertex2(0 + 50 * j, 0 + 50 * i);
GL.Vertex2(0 + 50 * j, 0 + 50 + 50 * i);
}
}
GL.End();
GL.PopMatrix();
但它看起来不像假设,应该如何正确完成?
答案 0 :(得分:7)
如果没有索引列表,则无法使用原始重启。此外,原始重启是一种性能增强工具;如果你正在使用立即模式渲染(glBegin/End
),你已经放弃了性能。所以只需将开头和结尾放在循环中,如下所示:
for (int i = 0; i < 6; i++)
{
GL.Begin(BeginMode.TriangleStrip);
for (int j = 0; j < 6; j++)
{
GL.Vertex2(0 + 50 * j, 0 + 50 * i);
GL.Vertex2(0 + 50 * j, 0 + 50 + 50 * i);
}
GL.End();
}
答案 1 :(得分:3)
如果要将整个地形绘制为单个三角形条带,则需要使用“退化三角形”(在相同位置具有两个或三个顶点的三角形),并在不同方向上绘制偶数行和奇数行。 Here关于它的一个教程,虽然对于DirectX,但用于定位顶点的循环应该几乎相同。