opengl - 在 OpenGL 中使用几何着色器修剪基元
问题描述
我有一个带有大约 2+ 百万个多边形的大型 2D 三角形(不是三角形条)网格。许多这些多边形是多余的,可以使用顶点着色器中的属性变量之一来确定。但是由于在顶点着色器中丢弃顶点是不可能的。我正在探索在几何着色器中丢弃基元作为优化的想法。保证该图元的所有三个顶点将具有相同的属性值。
我在这里有几个疑问
- 这真的会在速度和 GPU 内存方面优化渲染吗?
- 这在几何着色器中是否可行,几何着色器是否适合于此?
解决方案
但是由于在顶点着色器中丢弃顶点是不可能的。
废话。哦,当然,VS 不能“丢弃”三角形,但这并不意味着它没有能力。
完全在屏幕外出现的三角形通常只会对它们进行最少的处理。因此,至少,您可以让 VSgl_Position
根据相关属性是否具有您要查找的属性,将最终值调整为不在屏幕上。
如果您可以访问 OpenGL 4.6,则可以通过使用 cull planes来获得更好的体验,这允许 VS 更直接地剔除三角形。
这真的会在速度和 GPU 内存方面优化渲染吗?
从广义上讲,您永远不应该假设几何着色器会提高您应用它的任何算法的性能。在某些情况下,可以使用 GS 来优化算法,但没有实际的性能数据,您应该从假设开始,即使用它只会使性能变得更糟。
推荐阅读
- c# - 如何读取内存中的 csv 文件以进行快速处理?
- java - 如何在 java gradle 构建中包含自定义 .jar 文件?
- javascript - 如何在js中拆分不同长度的字符串?
- c - 在堆栈上构造保持上次函数调用的先前值
- android - 如何解决颤振中的 build.gradle 错误。如何解决此错误“评估项目 ':app' 时出现问题。> 格式错误的 \uxxxx 编码。”
- python - 程序在 Pycharm 调试器中崩溃,但不是在常规 Pycharm 运行中
- ios - 过滤领域的查询
- html - html 网站在不同的分辨率(如 mac 等)上重叠和混乱
- python - discord.py : bot.wait_for() 拦截 message.add_reaction() 并工作一次
- python - 使用没有嵌入的 LSTM 层