共用方式為


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) 。

轉譯狀態