0

我有一个用单个 fullscreen 绘制的平面GL_QUAD

我想在 my 指定的每个点使这个表面变形GL_Texture2D,最好是通过某种着色器。

在我看来,黑色可以对应平坦,白色可以对应山丘。

我想在我的地形上拥有大约 400 万个点,并在程序的每一步更新它们。

我将如何使用几何着色器来做到这一点?着色器是否能够生成新的验证?

4

1 回答 1

2

最简单的方法是生成一个大的三角形带状网格,将其上传到 VBO 并绘制它,使用顶点着色器仅更改上坐标。顶点着色器还可以从高度图生成法线(或提供法线贴图),然后将其传递给片段着色器进行照明。

为避免为顶点存储大量数据,请使用 glVertexID 在顶点着色器中从头开始生成顶点位置。不要绑定任何缓冲区,只需调用 glDrawArrays(GL_TRIANGLE_STRIP, 0,lots)。

正如 GuyRT 所提到的,镶嵌着色器也很好,它允许您根据相机与网格的距离来改变镶嵌细节。不过,这将是更多的工作。

于 2013-08-15T15:24:48.240 回答