IDirect3D9::CheckDeviceFormat メソッド (d3d9.h)

サーフェス形式を指定したリソースの種類として使用でき、このアダプターを表すデバイスでテクスチャ、深度ステンシル バッファー、レンダー ターゲット、または 3 つの任意の組み合わせとして使用できるかどうかを決定します。

構文

HRESULT CheckDeviceFormat(
  [in] UINT            Adapter,
  [in] D3DDEVTYPE      DeviceType,
  [in] D3DFORMAT       AdapterFormat,
  [in] DWORD           Usage,
  [in] D3DRESOURCETYPE RType,
  [in] D3DFORMAT       CheckFormat
);

パラメーター

[in] Adapter

型: UINT

照会するディスプレイ・アダプターを示す序数。 D3DADAPTER_DEFAULT は常にプライマリ ディスプレイ アダプターです。 このメソッドは、この値がシステム内のディスプレイ アダプターの数と等しいか、または超えたときに、D3DERR_INVALIDCALLを返します。

[in] DeviceType

種類: D3DDEVTYPE

D3DDEVTYPE 列挙された 型のメンバー。デバイスの種類を識別します。

[in] AdapterFormat

種類: D3DFORMAT

D3DFORMAT列挙型のメンバー。アダプターを配置する表示モードの形式を識別します。

[in] Usage

型: DWORD

サーフェスの使用オプションを要求しました。 使用オプションは 、D3DUSAGE 定数と D3DUSAGE_QUERY 定数の任意の組み合わせです ( checkDeviceFormat にはD3DUSAGE定数のサブセットのみが有効です。D3DUSAGE ページの表を参照してください)。

[in] RType

種類: D3DRESOURCETYPE

クエリ形式で使用するために要求されたリソースの種類。 D3DRESOURCETYPEのメンバー。

[in] CheckFormat

種類: D3DFORMAT

使用法で定義されているように、使用できるサーフェスの形式。 D3DFORMATのメンバー。

戻り値

型: HRESULT

要求された使用に対して指定されたデバイスと形式が互換性がある場合、このメソッドは D3D_OKを返します。

D3DERR_INVALIDCALLは、アダプターがシステム内のディスプレイ アダプターの数と等しいか、または超えている場合、または DeviceType がサポートされていない場合に返されます。

この使用のためにデバイスで形式が許容されない場合は、D3DERR_NOTAVAILABLEが返されます。

注釈

CheckDeviceFormat を使用してのハードウェア サポートをチェックする例を次に示します。

  • 画面外のプレーンサーフェス形式 - Usage = 0、RType = D3DRTYPE_SURFACEを指定します。
  • 深度ステンシル形式 - 次のスニペットは、渡された深度ステンシル形式をテストします。
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    列挙プロセスの詳細については、「 デバイスの選択 (Direct3D 9)」 を参照してください。

  • このテクスチャを特定の形式でレンダリングできますか - 現在の表示モードを指定すると、この例では、テクスチャ形式が特定のバックバッファー形式と互換性があることを確認する方法を示します。
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • ピクセル シェーダーでのアルファ ブレンド - [使用法] を [D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING] に設定します。 これは、すべての浮動小数点レンダー ターゲットで失敗することを想定しています。
  • ミップマップの自動生成 - [使用状況] を [D3DUSAGE_AUTOGENMIPMAP] に設定します。 mipmap の自動生成が失敗した場合、アプリケーションは mipmapped 以外のテクスチャを取得します。 このメソッドの呼び出しはヒントと見なされるため、失敗するのはミップマップの生成だけであれば、このメソッドはD3DOK_NOAUTOGEN (有効な成功コード) を返すことができます。 ミップマップの生成の詳細については、「 Mipmap の自動生成 (Direct3D 9)」を参照してください。
Direct3D 9 から Direct3D 10 にコードを移行する場合、CheckDeviceFormat と同等の Direct3D 10 は CheckFormatSupport です。

要件

要件
対象プラットフォーム Windows
ヘッダー d3d9.h (D3D9.h を含む)
Library D3D9.lib

こちらもご覧ください

IDirect3D9