Share via


深度バッファーの作成 (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;

Direct3D にアプリケーションの深度バッファーを管理させるには、EnableAutoDepthStencil メンバーを TRUE に設定します。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)」を参照してください。