IDXGIFactory2::CreateSwapChainForComposition 方法 (dxgi1_2.h)

建立交換鏈結,可讓您用來將 Direct3D 內容傳送至 DirectComposition API、 Windows.UI.Xaml 架構,或 Windows UI 連結庫 (WinUI) XAML,以在視窗中撰寫。

語法

HRESULT CreateSwapChainForComposition(
  [in]           IUnknown                    *pDevice,
  [in]           const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  [in, optional] IDXGIOutput                 *pRestrictToOutput,
  [out]          IDXGISwapChain1             **ppSwapChain
);

參數

[in] pDevice

對於 Direct3D 11 和舊版 Direct3D,這是交換鏈結之 Direct3D 裝置的指標。 針對 Direct3D 12,這是直接命令佇列的指標, (參考 ID3D12CommandQueue) 。 此參數不可為 NULL。 組合交換鏈結不支援 軟體驅動程式,例如D3D_DRIVER_TYPE_REFERENCE

[in] pDesc

交換鏈結描述 之DXGI_SWAP_CHAIN_DESC1 結構的指標。 此參數不可為 NULL

您必須在 DXGI_SWAP_CHAIN_DESC1SwapEffect 成員中指定 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 值,因為 CreateSwapChainForComposition 僅支援 翻轉簡報模型

您也必須在 DXGI_SWAP_CHAIN_DESC1縮放成員中指定DXGI_SCALING_STRETCH值。

[in, optional] pRestrictToOutput

輸出要限制內容的 IDXGIOutput 介面指標。 您也必須在IDXGISwapChain1::P resent1 呼叫中傳遞DXGI_PRESENT_RESTRICT_TO_OUTPUT旗標,以強制內容出現在任何其他輸出上。 如果您想要將內容限制為不同的輸出,您必須建立新的交換鏈結。 不過,您可以根據 DXGI_PRESENT_RESTRICT_TO_OUTPUT 旗標,有條件地限制內容。

如果您不想將內容限制為輸出目標,請將此參數設定為 NULL

[out] ppSwapChain

變數的指標,會接收 CreateSwapChainForComposition 所建立之交換鏈結之 IDXGISwapChain1 介面的指標。

傳回值

CreateSwapChainForComposition 會傳回:

  • 如果已成功建立交換鏈結,S_OK。
  • 如果記憶體無法完成作業,E_OUTOFMEMORY。
  • 如果 呼叫的應用程式提供無效的數據,例如 ,如果 pDescppSwapChainNULL,則DXGI_ERROR_INVALID_CALL。
  • 可能是 DXGI_ERROR主題中所述 的其他錯誤碼,這些錯誤碼是由您傳遞至 pDevice 的裝置類型所定義。

Windows 7 的平臺更新: 在已安裝 Windows 7 平臺更新 的 Windows 7 或 Windows Server 2008 R2 上, CreateSwapChainForComposition 失敗,E_NOTIMPL。 如需 Windows 7 平臺更新的詳細資訊,請參閱 適用於 Windows 7 的平臺更新

備註

您可以使用組合交換鏈結搭配下列其中一項:

針對 DirectComposition,您可以呼叫 IDCompositionVisual::SetContent 方法,將交換鏈結設定為 視覺物件的內容,然後可讓您將交換鏈結系結至可視化樹狀結構。 針對 XAML,SwapChainBackgroundPanel 類別會公開傳統 COM 介面 ISwapChainBackgroundPanelNative。 您可以使用 ISwapChainBackgroundPanelNative::SetSwapChain 方法系結至 XAML UI 圖形。 如需如何使用組合交換鏈結搭配 XAML 的 SwapChainBackgroundPanel 類別的詳細資訊,請參閱 DirectX 和 XAML Interop

IDXGISwapChain::SetFullscreenStateIDXGISwapChain::ResizeTargetIDXGISwapChain::GetContainingOutputIDXGISwapChain1::GetHwndIDXGISwapChain::GetCoreWindow 方法在這種類型的交換鏈結上無效。 如果您在這種類型的交換鏈結上呼叫任何這些方法,它們就會失敗。

如需如何為交換鏈結的後台緩衝區選擇格式的詳細資訊,請參閱 轉換色彩空間的數據

範例

如需示範如何使用 CreateSwapChainForComposition 的程式碼範例,請參閱 SwapChainPanel 和遊戲

規格需求

需求
最低支援的用戶端 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 適用於 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 dxgi1_2.h
程式庫 Dxgi.lib

另請參閱