【发布时间】:2017-11-16 10:23:48
【问题描述】:
在我的应用程序中,我有一些仅写入深度缓冲区的着色器,以便稍后将其用于阴影。此外,我还有一些其他着色器可以渲染全屏四边形,其深度不会影响所有后续绘制调用,因此它的深度值可能会被丢弃。
假设应用程序在现代硬件上运行(从 5 年前到现在),如果我禁用阴影贴图着色器的颜色缓冲区写入 (glColorMask(all to GL_FALSE)) 和深度缓冲区写入 (glDepthMask()),我是否会获得任何额外的性能) 用于全屏四边形着色器?
换句话说,这些函数是否真的禁用了某些内存操作,或者它们只是改变了在这部分渲染管道中固定按位操作逻辑中使用的一些掩码位?
关于测试的同样问题。如果我事先知道所有片段都会通过深度测试,那么禁用深度测试会提高性能吗?
我的 FPS 测量结果没有显示任何显着差异,但在另一台机器上的结果可能会有所不同。
最后,如果在禁用深度/颜色测试/写入的情况下渲染运行得更快,它的运行速度会快多少? gl 函数调用开销不会抵消这种性能提升吗?
【问题讨论】:
标签: opengl depth-buffer