IDirect3D9::CheckDepthStencilMatch メソッド (d3d9.h)
深度ステンシル形式が特定の表示モードのレンダー ターゲット形式と互換性があるかどうかを判断します。
構文
HRESULT CheckDepthStencilMatch(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] D3DFORMAT AdapterFormat,
[in] D3DFORMAT RenderTargetFormat,
[in] D3DFORMAT DepthStencilFormat
);
パラメーター
[in] Adapter
型: UINT
照会する表示アダプターを示す序数。 D3DADAPTER_DEFAULTは常にプライマリ ディスプレイ アダプターです。
[in] DeviceType
型: D3DDEVTYPE
D3DDEVTYPE 列挙型のメンバー。デバイスの種類を識別します。
[in] AdapterFormat
型: D3DFORMAT
アダプターを配置する表示モードの形式を識別する D3DFORMAT 列挙型のメンバー。
[in] RenderTargetFormat
型: D3DFORMAT
D3DFORMAT 列挙型のメンバー。テストするレンダー ターゲット サーフェスの形式を識別します。
[in] DepthStencilFormat
型: D3DFORMAT
D3DFORMAT 列挙型のメンバー。テストする深度ステンシルサーフェスの形式を識別します。
戻り値
種類: HRESULT
深度ステンシル形式が表示モードのレンダー ターゲット形式と互換性がある場合、このメソッドはD3D_OKを返します。 1 つ以上のパラメーターが無効な場合は、D3DERR_INVALIDCALLを返すことができます。 深度ステンシル形式が表示モードのレンダー ターゲットと互換性がない場合、このメソッドはD3DERR_NOTAVAILABLEを返します。
解説
このメソッドは、特定の深度形式が特定のレンダー ターゲット形式でのみ機能することを必要とするハードウェアをアプリケーションが操作できるようにするために提供されます。
DirectX 8.1 では、このメソッドの動作が変更されました。 このメソッドは、D24x8 および D32 深度ステンシル形式に注目するようになりました。 以前のバージョンでは、これらの形式は常に 32 ビットまたは 16 ビットのレンダー ターゲットで使用できるものとします。 このメソッドは、デバイスが混合深度操作が可能な場合にのみ、これらの形式のD3D_OKを返すようになりました。
次のコード フラグメントは、 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 が 返されます。
要件
対象プラットフォーム | Windows |
ヘッダー | d3d9.h (D3D9.h を含む) |
Library | D3D9.lib |