Share via


IDirect3D9::CheckDeviceType 方法 (d3d9.h)

驗證硬體加速裝置類型是否可以在此介面卡上使用。

語法

HRESULT CheckDeviceType(
  [in] UINT       Adapter,
  [in] D3DDEVTYPE DevType,
  [in] D3DFORMAT  AdapterFormat,
  [in] D3DFORMAT  BackBufferFormat,
  [in] BOOL       bWindowed
);

參數

[in] Adapter

類型: UINT

表示要列舉之顯示配接器的序數。 D3DADAPTER_DEFAULT一律是主要顯示配接器。 當這個值等於或超過系統中的顯示配接器數目時,這個方法會傳回D3DERR_INVALIDCALL。

[in] DevType

類型: D3DDEVTYPE

D3DDEVTYPE列舉型別的成員,表示要檢查的裝置類型。

[in] AdapterFormat

類型: D3DFORMAT

D3DFORMAT列舉型別的成員,指出要檢查裝置類型之介面卡顯示模式的格式。 例如,某些裝置只會以每圖元 16 位模式運作。

[in] BackBufferFormat

類型: D3DFORMAT

背景緩衝區格式。 如需格式的詳細資訊,請參閱 D3DFORMAT。 這個值必須是其中一種轉譯目標格式。 您可以使用 GetAdapterDisplayMode 來取得目前的格式。

對於視窗化應用程式,如果硬體支援色彩轉換,後端緩衝區格式就不需要比對顯示模式格式。 可能的背景緩衝區格式集受到限制,但執行時間允許任何有效的背景緩衝區格式呈現給任何桌面格式。 因為裝置通常不會以每個圖元模式 8 位運作,所以裝置在桌面上可以操作的額外需求。

全螢幕應用程式無法進行色彩轉換。

視窗模式允許D3DFMT_UNKNOWN。

[in] bWindowed

類型: BOOL

值,指出裝置類型將用於全螢幕模式或視窗模式。 如果設定為 TRUE,則會針對視窗化應用程式執行查詢;否則,此值應該設定 為 FALSE

傳回值

類型: HRESULT

如果此介面卡可以使用裝置,則會傳回D3D_OK。

如果 Adapter 等於或超過系統中的顯示配接器數目,則會傳回D3DERR_INVALIDCALL。 如果 CheckDeviceType 指定了不存在的裝置,也會傳回D3DERR_INVALIDCALL。

如果不支援要求的背景緩衝區格式,或指定的格式無法使用硬體加速,則會傳回D3DERR_NOTAVAILABLE。

備註

hal 裝置類型需要硬體加速。 應用程式可以使用 CheckDeviceType 來判斷是否有所需的硬體和驅動程式可支援 hal 裝置。

全螢幕應用程式不應該指定包含 Alpha 色板的 DisplayFormat。 這會導致呼叫失敗。 請注意,Alpha 色板可以出現在背景緩衝區,但兩種顯示格式必須與其他所有方面相同。 例如,如果 DisplayFormat = D3DFMT_X1R5G5B5,BackBufferFormat 的有效值會包含D3DFMT_X1R5G5B5和D3DFMT_A1R5G5B5但排除D3DFMT_R5G6B5。

下列程式碼片段示範如何使用 CheckDeviceType 來測試特定裝置類型是否可以在此介面卡上使用。


if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT, 
                                        D3DDEVTYPE_HAL, 
                                        DisplayFormat, 
                                        BackBufferFormat, 
                                        bIsWindowed)))
    
     return S_OK;
// There is no HAL on this adapter using this render-target format. 
// Try again, using another format.

如果裝置可以在預設介面卡上使用指定的介面格式,則此程式碼會傳回S_OK。

使用 CheckDeviceType 來測試與顯示格式不同的背景緩衝區之間的相容性,將會傳回適當的值。 這表示呼叫會反映裝置功能。 如果裝置無法轉譯為所要求的背景緩衝區格式,呼叫仍會傳回D3DERR_NOTAVAILABLE。 如果裝置可以轉譯為格式,但無法執行色彩轉換簡報,則傳回值也會D3DERR_NOTAVAILABLE。 應用程式可以藉由呼叫 CheckDeviceFormatConversion來探索簡報本身的硬體支援。 不會提供色彩轉換簡報本身的軟體模擬。

需求

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

另請參閱

IDirect3D9