IDirect3D9::CheckDepthStencilMatch メソッド

IDirect3D9::CheckDepthStencilMatch メソッド

深度ステンシル フォーマットが、特定のディスプレイ モードでのレンダリング ターゲット フォーマットと互換性があるかどうかを調べる。

構文

HRESULT CheckDepthStencilMatch(      
    UINT Adapter,
    D3DDEVTYPE DeviceType,
    D3DFORMAT AdapterFormat,
    D3DFORMAT RenderTargetFormat,
    D3DFORMAT DepthStencilFormat
);

パラメータ

  • Adapter
    [in] 問い合わせ対象のディスプレイ アダプタを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプタである。
  • DeviceType
    [in] D3DDEVTYPE 列挙型のメンバ。デバイス タイプを識別する。
  • AdapterFormat
    [in] D3DFORMAT 列挙型のメンバ。アダプタで使われるディスプレイ モードのフォーマットを識別する。
  • RenderTargetFormat
    [in] D3DFORMAT 列挙型のメンバ。テストするレンダリング ターゲット サーフェイスのフォーマットを識別する。
  • DepthStencilFormat
    [in] D3DFORMAT 列挙型のメンバ。テストする深度ステンシル サーフェイスのフォーマットを識別する。

戻り値

深度ステンシル フォーマットが、ディスプレイ モードのターゲット レンダリング フォーマットと互換性がある場合、このメソッドは D3D_OK を返す。

パラメータの 1 つまたは複数が無効な場合は、D3DERR_INVALIDCALL を返す場合がある。深度ステンシル フォーマットが、ディスプレイ モードのターゲット レンダリング フォーマットと互換性がない場合、このメソッドは D3DERR_NOTAVAILABLE を返す。

注意

このメソッドは、特定の深度フォーマットが特定のレンダリング ターゲット フォーマットでのみ機能するハードウェア レンダリングでアプリケーションが機能できるようにするために用意されている。

このメソッドの動作は、Microsoft® DirectX® 8.1 のために変更された。このメソッドは、D24x8 および D32 の深度ステンシル フォーマットを考慮するようになった。以前のバージョンでは、これらのフォーマットが常に 32 ビットまたは 16 ビットのレンダリング ターゲットで使用可能であると想定していた。現在では、デバイスが混合深度操作能力がある場合にのみ、これらのフォーマットに対して D3D_OK を返す。

次のサンプル コードは、IDirect3D9::CheckDeviceFormat を使って深度ステンシル フォーマットを検証する方法を示している。

BOOL IsDepthFormatOk( D3DFORMAT DepthFormat, 
                      D3DFORMAT AdapterFormat, 
                      D3DFORMAT BackBufferFormat ) {

    // Verify that the depth format exists.
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          D3DUSAGE_DEPTHSTENCIL,
                                          D3DRTYPE_SURFACE,
                                          DepthFormat);

    if( FAILED( hr ) ) return FALSE;

    // Verify that the depth format is compatible.
    hr = pD3D->CheckDepthStencilMatch( D3DADAPTER_DEFAULT,
                                       D3DDEVTYPE_HAL,
                                       AdapterFormat,
                                       BackBufferFormat,
                                       DepthFormat);

    return SUCCEEDED( hr );

}

上の呼び出しは、DepthFormatAdapterFormat および BackBufferFormat と組み合わせて使えない場合、FALSE を返す。