Platform SDK: DirectX

深度バッファのクリア

[C++]

多くの C++ アプリケーションでは、新しいフレームをレンダリングする前に深度バッファをクリアする。IDirect3DDevice7::Clear メソッドを呼び出すことにより、Direct3D で深度バッファを明示的にクリアできる。Clear メソッドでは、dvZ パラメータに任意の深度値を指定できる。

DirectDraw を使用して深度バッファをクリアすることもできる。これをクリアするには、深度バッファ サーフェスの IDirectDrawSurface7::Blt メソッドを呼び出す。DDBLT_DEPTHFILL フラグは、ブリットによって深度バッファをクリアすることを示す。このフラグを指定するときは、IDirectDrawSurface7::Blt メソッドに渡す DDBLTFX 構造体を初期化し、その dwFillDepth メンバを必要な深度に設定しなければならない。

3D アクセラレータ用の DirectDraw デバイス ドライバがハードウェアでの深度バッファのクリアをサポートしている場合、そのドライバは DDCAPS_BLTDEPTHFILL フラグを報告し、DDBLT_DEPTHFILL ブリットを処理しなければならない。深度埋め込みブリットの転送先サーフェスは、深度バッファ サーフェスでなければならない。

[Visual Basic]

多くの Visual Basic アプリケーションでは、新しいフレームをレンダリングする前に深度バッファをクリアする。Direct3DDevice7.Clear メソッドを呼び出すことにより、Direct3D で深度バッファを明示的にクリアできる。Clear メソッドでは、z パラメータに任意の深度値を指定できる。

DirectDraw を使用して深度バッファをクリアすることもできる。これをクリアするには、深度バッファ サーフェスの DirectDrawSurface7.Blt メソッドを呼び出す。DDBLT_DEPTHFILL フラグは、ブリットによって深度バッファをクリアすることを示す。このフラグを指定するときは、DirectDrawSurface7.Blt メソッドに渡される DDBLTFX 型がその lFill メンバを必要な深度に設定する。

3D アクセラレータ用の DirectDraw デバイス ドライバがハードウェアでの深度バッファのクリアをサポートしている場合、そのドライバは DDCAPS_BLTDEPTHFILL フラグを報告し、DDBLT_DEPTHFILL ブリットを処理しなければならない。深度埋め込みブリットの転送先サーフェスは、深度バッファ サーフェスでなければならない。