深度缓冲状态 (Direct3D 9)

深度缓冲是一种删除隐藏线条和表面的方法。 默认情况下,Direct3D 不使用深度缓冲。

有关深度缓冲区的概念性概述,请参阅 深度缓冲区 (Direct3D 9)

C++ 应用程序使用 D3DZBUFFERTYPE 枚举的成员来指定新状态值,使用D3DRS_ZENABLE呈现状态更新深度缓冲状态。

如果应用程序需要阻止 Direct3D 写入深度缓冲区,则可以使用 D3DRS_ZWRITEENABLE 枚举值,将 D3DZB_FALSE 指定为调用 IDirect3DDevice9::SetRenderState 的第二个参数。

下面的代码示例演示如何将深度缓冲区状态设置为启用 z 缓冲。

// This code example assumes that d3dDevice is a 
// valid pointer to an IDirect3DDevice9 interface.
// Enable z-buffering.
d3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

应用程序还可以使用D3DRS_ZFUNC呈现状态来控制 Direct3D 在执行深度缓冲时使用的比较函数。

Z 偏置是一种将一个表面显示在另一个图面前的方法,即使它们的深度值相同。 可以将此方法用于各种效果。 一个常见示例是在墙上渲染阴影。 阴影和墙壁具有相同的深度值。 但是,你希望应用程序在墙上显示阴影。 为阴影提供 z 偏置可使 Direct3D 正确显示它们 (看到D3DRS_DEPTHBIAS) 。

呈现状态