opengl - 在 OpenGL 中使用几何着色器修剪基元

标签 opengl opengl-es glsl shader geometry-shader

我有一个大型 2D 三角形(不是三角形带)网格,包含大约 2+ 百万个多边形。其中许多多边形是多余的,可以使用顶点着色器中的属性变量之一来确定。但由于在顶点着色器中丢弃顶点是不可能的。我正在探索在几何着色器中丢弃基元作为优化的想法。保证该图元的所有三个顶点都具有相同的属性值。

我有一些疑问

  1. 这真的会在速度和 GPU 内存方面优化渲染吗?
  2. 这在几何着色器中是否可行?几何着色器是否适合于此?

最佳答案

But since discarding a vertex in vertex shader is not possible.

废话。哦,当然,VS 不能“丢弃”三角形,但这并不意味着它没有力量。

完全在屏幕外出现的三角形通常只会进行最少的处理。所以至少,你可以让VS调整最终的gl_Position根据相关属性是否具有您正在查找的属性,该值将在屏幕外显示。

如果您可以访问 OpenGL 4.6,您可以通过 employing cull planes 获得更多乐趣,这使得VS可以更直接地剔除三角形。

Will this really optimize rendering in terms of speed and GPU memory?

从广义上讲,您永远不应该假设几何着色器会提高您应用它的任何算法的性能。在某些情况下,GS 可以用于优化算法,但缺乏实际性能数据,您应该从假设开始,即使用它只会使性能变得更糟。

关于opengl - 在 OpenGL 中使用几何着色器修剪基元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301328/

相关文章:

c++ - OpenGL纹理ID的范围是多少?

c - 如何在 OpenGL 中使用嵌套循环用较小的正方形列表填充平面?

matrix - 在 ARKit 中将屏幕点取消投影到水平面

iphone - 如何使用 GLshorts 表示法线坐标或纹理坐标?

c++ - 如何获取GLSL编译错误的行号

c# - OpenTK 中的立方体贴图

glsl - D CTFE 和 GPU 代码生成

c++ - OpenGL 帧缓冲区非常慢

c - 使用 openGL 截图并保存为 png

java - 三角带三角剖分