Microsoft DirectX 8.0 (C++)

IDirect3D8::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 を返す。

注意

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

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

BOOL IsDepthFormatOk( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat, 
                      D3DFORMAT BackBufferFormat ) {
    // 深度フォーマットが存在することを確認する。
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          D3DUSAGE_DEPTHSTENCIL,
                                          D3DRTYPE_SURFACE,
                                          DepthFormat);

    if( FAILED( hr ) ) return FALSE;

    // 深度フォーマットに互換性があることを確認する。
    hr = pD3D->CheckDepthStencilMatch( D3DADAPTER_DEFAULT,
                                       D3DDEVTYPE_HAL,
                                       AdapterFormat,
                                       BackBufferFormat,
                                       DepthFormat);
    return SUCCEEDED( hr );
}

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

動作環境

  ヘッダー : D3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。