我有一个用单个全屏GL_QUAD
绘制的平面。
我想在我的GL_Texture2D
指定的每个点处变形这个表面,最好是通过某种着色器。
在我看来,黑色可以对应于平面,白色可以对应于山丘。
我希望在我的地形上有大约400万个点,并在我的程序的每一步更新它们。
如何使用几何着色器执行此操作?着色器是否能够生成新的验证?
答案 0 :(得分:2)
最简单的方法是生成一个大的三角形条带网格,将其上传到VBO并绘制它,使用顶点着色器仅改变向上坐标。顶点着色器还可以从高度图生成法线(或提供法线贴图),然后将其传递给片段着色器进行照明。
为避免为顶点存储大量数据,请使用glVertexID在顶点着色器中从头开始生成顶点位置。不要绑定任何缓冲区,只需调用glDrawArrays(GL_TRIANGLE_STRIP,0,lot)。
正如GuyRT所提到的,曲面细分着色器也会很好,并允许您根据相机与网格的距离来改变曲面细分细节。但这会更有效。