深度バッファリングの状態 (Direct3D 9)
深度バッファリングは、隠れ線とサーフェスを削除する方法です。 既定では、Direct3D では深度バッファリングは使用されません。
深度バッファーの概念の概要については、「 深度バッファー (Direct3D 9)」を参照してください。
C++ アプリケーションは、 D3DZBUFFERTYPE 列挙のメンバーを使用して新しい状態値を指定して、深度バッファリング状態をD3DRS_ZENABLEレンダリング状態に更新します。
アプリケーションで Direct3D が深度バッファーに書き込むのを防ぐ必要がある場合は、 IDirect3DDevice9::SetRenderState の呼び出しの 2 番目のパラメーターとして D3DZB_FALSE を指定して、D3DRS_ZWRITEENABLE列挙値を使用できます。
次のコード例は、深度バッファーの状態を設定して 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」を参照)。
関連トピック