次の方法で共有


IDirect3D9::CheckDepthStencilMatch

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

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

パラメータ

  • Adapter
    クエリするディスプレイ アダプターを示す序数。D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプターです。
  • DeviceType
    D3DDEVTYPE 列挙型のメンバー。デバイス タイプを指定します。
  • AdapterFormat
    D3DFORMAT 列挙型のメンバー。アダプターに適用される表示モードの形式を指定します。
  • RenderTargetFormat
    D3DFORMAT 列挙型のメンバー。テストされるレンダー ターゲット サーフェスのフォーマットを識別します。
  • DepthStencilFormat
    D3DFORMAT 列挙型のメンバー。テストされる深度ステンシル サーフェスのフォーマットを識別します。

戻り値

深度ステンシル フォーマットが表示モードのレンダー ターゲット フォーマットと互換性がある場合、このメソッドは D3D_OK を返します。1 つ以上のパラメーターが無効な場合、D3DERR_INVALIDCALL が返されます。深度ステンシル フォーマットが表示モードのレンダー ターゲット フォーマットと互換性がない場合、このメソッドは D3DERR_NOTAVAILABLE を返します。

解説 

このメソッドを使用すると、特定の深度フォーマットが特定のレンダー ターゲット フォーマットでのみ動作することを必要とするハードウェアをアプリケーションで操作できます。

このメソッドの動作は、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);      } 

上のように呼び出すと、DepthFormat を AdapterFormat および BackBufferFormat と共に使用できない場合に FALSE を返します。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容