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
介面的要求使用選項。 使用選項是 D3DUSAGE 和 D3DUSAGE_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) 。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d9.h (包含 D3D9.h) |
程式庫 | D3D9.lib |