Platform SDK: DirectX

ステップ 4 : 深度バッファリングを有効にする

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。

[Visual Basic]

深度バッファをレンダリング ターゲット サーフェスにアタッチすると、レンダリング ターゲットからレンダリング デバイスを作成することができる。

深度バッファを使用するアプリケーションでは、ビューポートと深度バッファの両方をクリアする必要がある。深度バッファをクリアするには、Direct3DDevice7.Clear メソッドで D3DCLEAR_ZBUFFER フラグを指定する。

g_d3dDevice.Clear 1, g_d3drcViewport(), D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, &HFF, 1, 0

レンダリング デバイスが用意されると、そのデバイスの D3DREMDERSTATE_ZENABLE レンダリング ステートを設定して、深度バッファリングを有効にすることができる。CONST_D3DZBUFFERTYPE 列挙型には、深度バッファのレンダリング ステートを設定するメンバが含まれている。メンバ D3DZB_TRUE (または TRUE) により、z バッファリングを有効にする。サンプル Zbuffer は、アプリケーション定義サブルーチン RenderScene でのシーンのレンダリング中に、z バッファリングを有効にしている。次のコードは、RenderScene からの該当部分の抜粋である。

g_d3dDevice.SetRenderState D3DRENDERSTATE_ZENABLE, D3DZB_TRUE

このチュートリアルでは、フレーム単位に深度バッファリングを有効にしているが、これは必須ではない。実際のアプリケーションでは、シーンの初期化中に D3DRENDERSTATE_ZENABLE レンダリング ステートを設定しておき、深度バッファリングを無効にしたり、深度バッファリングの別のタイプを選択するときにだけ変更するのが普通である。

 :  D3DZBUFFERTYPE 列挙型は、準拠ハードウェア上での w ベースの深度照合を有効にする D3DZB_USEW 値を含んでいる。詳細については、「深度バッファ」を参照すること。