IDXGIOutput5::D uplicateOutput1 方法 (dxgi1_5.h)
允許指定 IDXGIOutputDuplication 物件可傳回之全螢幕表面的支援格式清單。
語法
HRESULT DuplicateOutput1(
[in] IUnknown *pDevice,
UINT Flags,
[in] UINT SupportedFormatsCount,
[in] const DXGI_FORMAT *pSupportedFormats,
[out] IDXGIOutputDuplication **ppOutputDuplication
);
參數
[in] pDevice
類型: IUnknown*
Direct3D 裝置介面的指標,可用來處理桌面映射。 必須從輸出連接的配接器建立此裝置。
Flags
類型: UINT
描述要建立之擷取介面類型的 DXGI_OUTDUPL_FLAG 列舉值的位欄位字段。
[in] SupportedFormatsCount
類型: UINT
指定支援的格式數目。
[in] pSupportedFormats
類型: const DXGI_FORMAT*
指定DXGI_FORMAT項目長度SupportedFormatsCount 的陣列。
[out] ppOutputDuplication
類型: IDXGIOutputDuplication**
接收新 IDXGIOutputDuplication 介面之變數的指標。
傳回值
類型: HRESULT
- 如果 DuplicateOutput1 已成功建立桌面重複介面,S_OK。
- E_INVALIDARG下列其中一個原因:
- 指定的裝置 (pDevice) 無效、未在正確的適配卡上建立,或不是從 IDXGIFactory1 (或更新版本的 DXGI Factory 介面建立,該介面繼承自 IDXGIFactory1) 。
- 呼叫的應用程式已經複製此桌面輸出。
- 如果應用程式沒有目前桌面映像的存取權,E_ACCESSDENIED。 例如,只有執行於 LOCAL_SYSTEM 的應用程式才能存取安全桌面。
-
如果建立的 IDXGIOutputDuplication 介面不支援目前的桌面模式或案例,DXGI_ERROR_UNSUPPORTED。 例如,不支援 8bpp 和非 DWM 桌面模式。
如果 DuplicateOutput1 失敗並DXGI_ERROR_UNSUPPORTED,應用程式可以等候桌面交換器和模式變更的系統通知,然後在發生這類通知之後再次呼叫 DuplicateOutput1 。 如需詳細資訊,請參閱桌面交換器 (EVENT_SYSTEM_DESKTOPSWITCH) 和模式變更通知 (WM_DISPLAYCHANGE) 。
- DXGI_ERROR_NOT_CURRENTLY_AVAILABLE如果 DXGI 達到並行重複應用程式數目上限的限制, (預設為四個) 。 因此,呼叫端應用程式在關閉其他應用程式之前,無法建立任何桌面重複介面。
- DXGI_ERROR_SESSION_DISCONNECTED如果 DuplicateOutput1 失敗,因為會話目前已中斷連線。
- DXGI_ERROR 主題會 說明其他錯誤碼。
備註
這個方法允許直接接收執行中全螢幕應用程式所使用的原始後台緩衝區格式。 為了比較,使用原始 的 DuplicateOutput 函式一律會將全螢幕表面轉換成 32 位 BGRA 格式。 如果目前的全螢幕應用程式使用不同的緩衝區格式,則轉換為32位 BGRA 會產生效能負面影響。 除了能夠略過格式轉換的效能優勢之外,使用 DuplicateOutput1 也允許在呈現R10G10B10A2) 等高色彩格式 (的情況下接收色彩的完整遊戲。
pSupportedFormats 數位上應該只包含顯示掃描格式。 如需每個功能層級的必要掃描格式,請參閱 Direct3D 功能層級 11.0 硬體的格式支援 。 如果目前的全螢幕緩衝區格式未包含在 pSupportedFormats 陣列中,DXGI 會挑選其中一個提供的格式,並將全螢幕緩衝區轉換為該格式,再從 IDXGIOutputDuplication::AcquireNextFrame 傳回。 支援的格式清單應該一律包含DXGI_FORMAT_B8G8R8A8_UNORM,因為這是桌面最常見的格式。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | dxgi1_5.h |
程式庫 | Dxgi.lib |
Dll | Dxgi.dll |