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 ); }
上の呼び出しは、DepthFormat が AdapterFormat および BackBufferFormat と組み合わせて使えない場合、FALSE を返す。