3

我读过很多次,将几何从三角形合并到三角形条带或三角形扇形可以提高 3D 渲染的性能,因为必须处理的顶点更少等等......在使用 VBO 和索引渲染的上下文中,所有这些考虑因素有多相关?

例如,我有一个由三角形组成的图元(球体)。我有 VBO,我只存储唯一的顶点,我有 VBO(绑定到 GL_ELEMENT_ARRAY_BUFFER),我存储索引以从顶点构造图元。所有渲染都是通过glDrawElementsInstanced(). 在应用一些条带化技术并将我的基元渲染为 GL_TRIANGLE_STRIP 并启用基元重启后,我会获得任何性能提升吗?

文档说OpenGL管道在所有每个顶点操作之后和光栅化之前组装图元。我可以猜到,这意味着驱动程序首先为所有顶点调用顶点(几何等)着色器,然后才开始使用索引数组来获取三角形。如果这是真的,则条带化会减慢该过程,因为将应用对原始重启的额外检查。

我试图找到一些剥离器库,但我发现的所有东西看起来都在几年前被遗弃了。于是人们突然对这个领域失去了兴趣……

考虑到所有这些因素,没有必要进行条带化。我是正确的还是我错过了一些重要的事情?是否需要在现代硬件上进行剥离?

4

1 回答 1

3

一般来说,不,你不会从三条中获得优势。现代硬件期待索引数据,并为此进行了优化。

这并不是说可以随机访问索引——因为数据被缓存,所以局部性很重要。因此,按条形顺序排列三角形可能会有所改进。

性能也会有所不同,具体取决于实际花费了多少时间来担心三角形设置和顶点处理,以及实际着色的时间。

与所有事情一样 - 分析您的表现以查看适合您自己情况的方法,但自 PS2 以来我没有为剥离三角形而烦恼。

于 2012-12-18T11:35:16.537 回答