Share via


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

保留以備將來之用;必須為零。

[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

另請參閱

DuplicateOutput

IDXGIOutput5