我正在阅读this文章,作者写道:
我以前从未听说过丢弃会对性能等产生不良影响,并且在不需要详细的Alpha时会一直使用它来避免混合。
有人可以解释为什么以及何时使用丢弃可能被认为是不好的做法,并且丢弃+ depthtest与alpha + blend相比如何?
编辑:在收到有关此问题的答案后,我通过渲染背景渐变以及顶部的带纹理的四边形进行了一些测试。
if(gl_FragColor.a < 0.5 ){ discard; }
”行结尾的片段着色器,可以得到 32 fps 。 渲染速度约为 44 fps 。
GL_ONE_MINUS_SRC_ALPHA)”而不是GL_DEPTH_TEST也导致 44 fps 左右。
最佳答案
它取决于硬件。对于PowerVR硬件和其他使用基于图块的渲染的GPU,使用discard
意味着TBR不能再假定绘制的每个片段都将成为一个像素。该假设很重要,因为它允许TBR首先评估所有深度,然后仅评估最顶部片段的片段着色器。除硬件外,一种延迟渲染方法。
请注意,打开Alpha测试会遇到相同的问题。
关于android - 丢弃是否对OpenGL中的程序性能有害?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8509051/