次の方法で共有


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

関連項目

IDirect3D9