Opengl 剥离器技术是否提高了性能?

Opengl 剥离器技术是否提高了性能?,opengl,Opengl,我读过很多次,将几何体从三角形合并到三角形条带或三角形扇形可以提高3D渲染的性能,因为需要处理的顶点更少等等。。。在使用VBO和索引渲染的环境中,所有这些注意事项的相关性如何 例如,我有一个由三角形组成的基本体(球体)。我有VBO,其中我只存储唯一的顶点,我有VBO(绑定到GL_元素_数组_缓冲区),其中我存储索引以从顶点构造基本体。所有渲染都是通过glDrawerElementsInstanced()完成的。在应用一些条带化技术并将我的原语呈现为启用原语重新启动的GL_TRIANGLE_条带之

我读过很多次,将几何体从三角形合并到三角形条带或三角形扇形可以提高3D渲染的性能,因为需要处理的顶点更少等等。。。在使用VBO和索引渲染的环境中,所有这些注意事项的相关性如何

例如,我有一个由三角形组成的基本体(球体)。我有VBO,其中我只存储唯一的顶点,我有VBO(绑定到GL_元素_数组_缓冲区),其中我存储索引以从顶点构造基本体。所有渲染都是通过
glDrawerElementsInstanced()
完成的。在应用一些条带化技术并将我的原语呈现为启用原语重新启动的GL_TRIANGLE_条带之后,我的性能会得到任何提高吗

文档说OpenGL管道在所有逐顶点操作之后和光栅化之前组装原语。正如我所猜测的,这意味着驱动程序首先调用所有顶点的顶点(几何体等)着色器,然后才开始使用索引数组来获取三角形。如果这是真的,条带化会减慢进程,因为将应用对原语重新启动的附加检查

我试图找到一些剥离器库,但我所找到的都是几年前被遗弃的。所以人们突然对这一领域失去了兴趣


考虑到所有这些因素,没有必要进行汽提。我是对的还是我错过了一些重要的事情?您需要在现代硬件上进行条带化吗?

一般来说,不需要,您不会从tri-strips中获得优势。现代硬件需要索引数据,并为此进行了优化

这并不是说索引可以随机访问,因为缓存数据时,局部性很重要。因此,将三角形按带状排列可能会有一些改进

性能也会有所不同,这取决于实际花在三角形设置和顶点处理上的时间,以及实际着色上的时间


所以,就像所有的事情一样,请描述一下你的表现,看看什么适合你自己的情况,但是自从PS2之后,我就没有费心去剥离三角形了。

谢谢。你能告诉我一些关于生成好的索引数组的事情吗。例如,我有一个三角形汤,需要消除所有重复的三角形,考虑到数据的局部性。有没有什么好的算法,或者最好的方法是进行条带化,并由此获得局部性?@Olegtiov说实话,我们不需要对数据做任何事情。我怀疑我们只是偶然获得了足够的局部性,因为导出的模型数据完全随机的情况很少。除非我知道这是一个真正的性能瓶颈,否则我甚至不会去想它。@JasonD:除此之外,如果你真的需要本地化数据,那就很容易了:将这些面填充到一个八叉树中,然后在对所述树的深度优先遍历中写出它们。