次の方法で共有


深度バッファリングの状態 (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」を参照)。

レンダリングの状態