百万网格编程?

时间:2013-08-13 19:34:44

标签: opengl glsl opengl-4

我有一个用单个全屏GL_QUAD绘制的平面。

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

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

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

如何使用几何着色器执行此操作?着色器是否能够生成新的验证?

1 个答案:

答案 0 :(得分:2)

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

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

正如GuyRT所提到的,曲面细分着色器也会很好,并允许您根据相机与网格的距离来改变曲面细分细节。但这会更有效。