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 |