深度バッファーの作成 (Direct3D 9)

深度バッファーは、デバイスのプロパティです。 Direct3D によって管理される深度バッファーを作成するには、次のコード例に示すように 、D3DPRESENT_PARAMETERS 構造体の適切なメンバーを設定します。

D3DPRESENT_PARAMETERS d3dpp; 
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed               = TRUE;
d3dpp.SwapEffect             = D3DSWAPEFFECT_COPY;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

EnableAutoDepthStencil メンバーを TRUE に設定すると、アプリケーションの深度バッファーを管理するように Direct3D に指示します。 AutoDepthStencilFormat は有効な深度バッファー形式に設定する必要があることに注意してください。 D3DFMT_D16 フラグは、16 ビットの深度バッファー (使用可能な場合) を指定します。

IDirect3D9::CreateDevice メソッドを次に呼び出すと、デバイスが作成され、深度バッファーが作成されます。

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                &d3dpp, &d3dDevice ) ) )
return E_FAIL;

深度バッファーは、デバイスのレンダー ターゲットとして自動的に設定されます。 デバイスがリセットされると、深度バッファーが自動的に破棄され、新しいサイズで再作成されます。

新しい深度バッファー サーフェスを作成するには、 IDirect3DDevice9::CreateDepthStencilSurface メソッドを使用します。

デバイスの新しい深度バッファー サーフェスを設定するには、 IDirect3DDevice9::SetDepthStencilSurface メソッドを使用します。

アプリケーションで深度バッファーを使用するには、深度バッファーを有効にする必要があります。 詳細については、「 深度バッファリングの有効化 (Direct3D 9)」を参照してください。

深度バッファー