Opengl 百万网格编程?
我用一个全屏绘制了一个平面Opengl 百万网格编程?,opengl,glsl,opengl-4,Opengl,Glsl,Opengl 4,我用一个全屏绘制了一个平面GL\u QUAD 我想在我的GL_Texture2D指定的每个点上变形该曲面,最好通过某种着色器 在我看来,黑色可以代表平坦,白色可以代表小山 我希望在我的地形上有大约400万个点,并在程序的每一步更新它们 如何使用几何体着色器来执行此操作?着色器是否能够生成新的veritices?最简单的方法是生成一个大的三角形条形网格,将其上载到VBO并绘制,使用顶点着色器仅更改上坐标。顶点着色器还可以从heightmap(或提供法线贴图)生成法线,然后将法线贴图传递给片段着色器
GL\u QUAD
我想在我的GL_Texture2D
指定的每个点上变形该曲面,最好通过某种着色器
在我看来,黑色可以代表平坦,白色可以代表小山
我希望在我的地形上有大约400万个点,并在程序的每一步更新它们
如何使用几何体着色器来执行此操作?着色器是否能够生成新的veritices?最简单的方法是生成一个大的三角形条形网格,将其上载到VBO并绘制,使用顶点着色器仅更改上坐标。顶点着色器还可以从heightmap(或提供法线贴图)生成法线,然后将法线贴图传递给片段着色器进行照明 要避免为顶点存储大量数据,请使用glVertexID在顶点着色器中从头生成顶点位置。不绑定任何缓冲区,只需调用glDrawArrays(GL\u TRIANGLE\u STRIP,0,lots)
正如GuyRT提到的,细分着色器也很好,它允许您根据摄影机到网格的距离改变细分细节。不过,这将是更多的工作。您能否重新构造您的问题,使其不能用简单的“是”或“否”来回答?我看不出这与GLSL以外的任何编程语言有什么关系;删除C++标签。你使用OpenGL 4还是更高?如果是,那么听起来应该使用细分着色器(而不是几何体着色器)来执行所需操作。我不明白为什么需要几何体着色器。只需使用@jozxyqk建议的顶点着色器。如果确实要在每个步骤修改顶点坐标,即保存在顶点着色器中完成的计算,请查看变换反馈。