【发布时间】:2013-07-27 17:59:32
【问题描述】:
作为一个 DirectX 菜鸟,我正试图围绕深度缓冲区,特别是如何为被遮挡的像素调用像素着色器。
据我了解,光栅化器为覆盖绘制的原始蜜蜂的每个像素调用像素着色器,然后在输出合并阶段的后期,输出合并检查深度缓冲区并丢弃、写入或混合像素后台缓冲区。
如果我在一个非常复杂的对象前面渲染一个简单的不透明对象,这似乎很浪费,所以在调用复杂对象的像素着色器之前让光栅器检查深度图似乎很有用。
在进行研究时,我发现了对早期 Z 测试/保守 Z 测试等的参考,但似乎也很少有关于它的文档。我寻找一种在光栅化状态描述对象上配置它的方法,但我只在 OM 状态描述对象上找到了类似的东西。
这似乎也可以在 DX9 中使用 SetRenderState 进行设置(不过我也没有使用 DX9 的经验)
从我的研究看来,如果我从前到后渲染对象,某些硬件就会这样做,对吗?我怎么能说出来?有了 DirectX 提供的所有控制功能,无法控制这一点似乎很奇怪,因为这似乎是一个很好的优化 :)
有关此的任何信息或参考资料均已获知
【问题讨论】:
标签: optimization directx directx-11 depth-buffer depth-testing