次の方法で共有


IDirect3D9::CheckDeviceFormat メソッド (d3d9helper.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を返します。

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

この使用のためにデバイスで形式が受け入れられない場合は、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 以外のテクスチャを取得します。 このメソッドの呼び出しはヒントと見なされるため、失敗するのは mipmap 生成だけである場合、このメソッドはD3DOK_NOAUTOGEN (有効な成功コード) を返すことができます。 ミップマップ生成の詳細については、「 Mipmap の自動生成 (Direct3D 9)」を参照してください。
Direct3D 9 から Direct3D 10 にコードを移行する場合、CheckDeviceFormat と同等の Direct3D 10 は CheckFormatSupport です。

要件

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

こちらもご覧ください

IDirect3D9