IDirect3D9::CheckDeviceFormat 方法 (d3d9.h)

決定表面格式是否可用為指定的資源類型,並且可用於代表此適配卡的裝置上做為紋理、深度樣板緩衝區或轉譯目標,或是三者的任何組合。

語法

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

介面的要求使用選項。 使用選項是 D3DUSAGED3DUSAGE_QUERY 常數的任何組合, (只有 checkDeviceFormat 的D3DUSAGE常數子集有效;請參閱D3DUSAGE頁面上的數據表) 。

[in] RType

類型: D3DRESOURCETYPE

要求搭配查詢格式使用的資源類型。 D3DRESOURCETYPE的成員。

[in] CheckFormat

類型: D3DFORMAT

可使用的介面格式,如Usage所定義。 D3DFORMAT的成員。

傳回值

類型: HRESULT

如果格式與所要求使用方式的指定裝置相容,此方法會傳回D3D_OK。

如果 Adapter 等於或超過系統中的顯示配接器數目,或不支援 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 );
    }
    
  • 圖元著色器中的 Alpha 混合 - 將 [使用方式] 設定為 [D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING]。 預期所有浮點轉譯目標都會失敗。
  • Mipmap 的自動產生 - 將 [使用量] 設定為 [D3DUSAGE_AUTOGENMIPMAP]。 如果 Mipmap 自動產生失敗,應用程式將會收到非 mipmapped 紋理。 呼叫這個方法會被視為提示,因此如果失敗的唯一專案是mipmap產生,這個方法可以傳回D3DOK_NOAUTOGEN (有效的成功码) 。 如需 mipmap 產生的詳細資訊,請參閱 自動產生 Mipmap (Direct3D 9)
將程式代碼從 Direct3D 9 移轉至 Direct3D 10 時,相當於 CheckDeviceFormat 的 Direct3D 10 是 CheckFormatSupport

規格需求

需求
目標平台 Windows
標頭 d3d9.h (包含 D3D9.h)
程式庫 D3D9.lib

另請參閱

IDirect3D9