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 内容