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 メソッドを使用する

アプリケーションで深度バッファを使用するためには、深度バッファを有効にする必要がある。詳細については、「深度バッファリングを有効にする」を参照すること。