Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 百万网格编程?_Opengl_Glsl_Opengl 4 - Fatal编程技术网

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建议的顶点着色器。如果确实要在每个步骤修改顶点坐标,即保存在顶点着色器中完成的计算,请查看变换反馈。