当前位置: 首页 > 知识库问答 >
问题:

如何用OpenGL制作二维地形?

甄华清
2023-03-14

我想做一个简单的2D地形,只有几个颠簸和高度变化:

我想过只是用随机数来描述某个顶点的高度,但我看不出我怎么能从这个做一个网格。我正在寻找一种方法来找到地形的顶点和索引缓冲区。
我如何做到这一点?

共有1个答案

王成化
2023-03-14

您可以使用GL_POLYGON来显示所有顶点的列表,第一个和最后一个顶点位于视图下方。

如果您想使用三角形网格,您必须在每个高度点的正下方创建一个点(在视野之外),那么模式(顺时针排序)将是:

for (number of height points-1)
    //vertices
     vertice below height;
     height vertice;
     next_height vertice;

     next height vertice;
     vertice below next height;
     vertice below height;

然后计算索引取决于存储顶点的方式,但在数组中也会有类似的模式。

 类似资料:
  • 我正在工作的OpenGL 2D游戏与雪碧图形。最近有人建议我应该使用OpenGL ES调用,因为它是OpenGL的子集,可以让我更容易地将它移植到移动平台上。大部分代码只是调用draw_image函数,其定义如下: 我需要修改什么才能使这个OpenGL ES兼容?另外,我使用固定函数而不是着色器的原因是我在一台不支持GLSL的机器上开发。

  • 我扩展了LibGdx TerrainTest示例和这个问题,以便它可以呈现给定一些HeightMap的地形块集合。这似乎在GL10中工作良好,正如示例所使用的,但是当我使用modelbatch和默认着色器在GL20上移动代码时,网格不会完全呈现(参见图--在这张图中,我们只尝试呈现一个32x32块)。 这是应用程序的代码: 我用来制作地形块顶点和索引的代码直接复制自我上面提到的SO问题。您可以在应

  • 我需要在OpenGL场景上绘制2D叠加层。OpenGL用于2D动画,只是在正交投影中绘制带纹理的2D矩形,这是绘制代码: 我的要求: > 性能至关重要。 允许使用特定于 Windows 的 API。 需要文本和图像覆盖(图标样式)。 定义覆盖位置和大小的唯一因素是窗口客户区的大小(在我的例子中等于OpenGL视口)。 什么技术适合这种情况?

  • 我想画一个球体并对它进行纹理,我用三角形来画它,当我试图对它进行纹理时,有些三角形没有被覆盖 我用这个函数来生成坐标

  • 问题内容: 我需要为正在进行的项目制作一个相当大的二维数组的副本。我有两个2D阵列: 我也有两种方法来进行复制。我需要复制数组,因为当前会定期更新。 和 但是,这不起作用。如果我叫old,对current进行更新,然后再调用keepold,则current不等于原来的值。为什么会这样呢? 谢谢 问题答案: 或使两个数组引用相同的东西,因此,如果你随后修改,也会被修改。要将一个数组的内容复制到另一个

  • 我用libgdx和box2d做卡车游戏。在我的游戏中,1米=100像素。我的2D地形是由我生成的,是由点制作的。 我所做的,是为整个多边形创建一个polygonregion并使用texturewrap.repeat。问题是,我的游戏大小被缩小了100倍,以适应box2d单位。 所以我的相机宽度是800/100,高度是480/100。(8x4.8像素)