Opengl 背面剔除性能

Opengl 背面剔除性能,opengl,Opengl,我一直在想: 如果只渲染正面多边形,而启用背面剔除,是否会影响性能? 我应该在这种情况下禁用它吗? 或者这取决于OpenGL的实现? 我可以想象,在软件实现中,禁用背面剔除的多边形渲染速度会更快。但在硬件方面呢 编辑 澄清一下:我的场景中永远不会有任何背面多边形。背面消隐永远不会消隐任何内容。因为无论是否启用消隐,都必须确定原语的缠绕(对于光栅化过程),所以背面消隐实际上是免费的。所以你可以让它开着。对于OpenGL实现来说,切换剔除状态本身是一件轻而易举的事情。它不会影响任何缓存、管道状态或其

我一直在想:

如果只渲染正面多边形,而启用背面剔除,是否会影响性能?
我应该在这种情况下禁用它吗?
或者这取决于OpenGL的实现? 我可以想象,在软件实现中,禁用背面剔除的多边形渲染速度会更快。但在硬件方面呢

编辑

澄清一下:我的场景中永远不会有任何背面多边形。背面消隐永远不会消隐任何内容。

因为无论是否启用消隐,都必须确定原语的缠绕(对于光栅化过程),所以背面消隐实际上是免费的。所以你可以让它开着。对于OpenGL实现来说,切换剔除状态本身是一件轻而易举的事情。它不会影响任何缓存、管道状态或其他可能对性能产生巨大影响的事情。

您为什么不自己对其进行基准测试,比如在屏幕上渲染x个正面多边形,在屏幕上启用和禁用背面剔除,然后你可以看到答案。在OpenGL中确定多边形缠绕顺序是一个非常简单的过程。它使用后投影顶点(因此,有时如果使用奇怪的投影矩阵,则必须切换前多边形缠绕),而不是需要计算多边形法线的更昂贵的边计算。启用它将减少填充片段的数量,因此它应该始终能够提高性能。你甚至可以在CPU上进行面部剔除,这在PC上曾经很常见,但现在主要用于PS3上的单元处理器SPE,这仍然是一个可行的优化。因为所有多边形都有一个正面和一个背面,除非你剔除其中一个。因为如果你禁用背面剔除,你将不再只渲染正面多边形。这不是我的第一次顺便说一下,语言也是。这就是为什么我把我读到的每件事都照字面理解,对含糊不清的书面陈述都有困难。无论如何,没有必要生气。现在我们已经澄清了您的意思,在硬件实现中,背面剔除不应该在原语组装期间引入任何可测量的开销。在软件中,也许,但再次归结到后投影顶点的缠绕,它不需要计算曲面法线,因此比您直观地认为的更便宜。非常感谢您的回答!这正是我一直在寻找的。