Microsoft DirectX 8.0 (C++) |
深度バッファはデバイスのプロパティである。Microsoft® Direct3D® によって管理される深度バッファを作成するには、D3DPRESENT_PARAMETERS 構造体の適切なメンバを設定する。次のコードは、その例を示している。
D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( &d3dpp, sizeof(d3dpp) ); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC; d3dpp.EnableAutoDepthStencil = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
EnableAutoDepthStencil メンバを TRUE に設定して、アプリケーションの深度バッファを管理するよう Direct3D に指示する。AutoDepthStencilFormat は有効な深度バッファ フォーマットに設定すること。D3DFMT_D16 フラグは、16 ビットの深度バッファが使用できる場合は、それを指定する。
次の IDirect3D8::CreateDevice メソッドの呼び出しによって、深度バッファを作成するデバイスを作成する。
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3dDevice ) ) ) return E_FAIL;
深度バッファは、デバイスのレンダリング ターゲットとして自動的に設定される。デバイスがリセットされると、深度バッファは自動的に破棄され、新しいサイズで再作成される。
新しい深度バッファ サーフェスを作成するには、IDirect3DDevice8::CreateDepthStencilSurface メソッドを使用する。
デバイスの新しい深度バッファ サーフェスを設定するには、IDirect3DDevice8::SetRenderTarget メソッドを使用する
アプリケーションで深度バッファを使用するためには、深度バッファを有効にする必要がある。詳細については、「深度バッファリングを有効にする」を参照すること。