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_DESC1 的 SwapEffect 成員中指定 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。
- 如果 呼叫的應用程式提供無效的數據,例如 ,如果 pDesc 或 ppSwapChain 為 NULL,則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 介面,
- 系統 XAML 的 SwapChainPanel 或 SwapChainBackgroundPanel 類別。
- Windows UI 連結庫 (WinUI) 3 XAML 的 SwapChainPanel 或 SwapChainBackgroundPanel 類別。
針對 DirectComposition,您可以呼叫 IDCompositionVisual::SetContent 方法,將交換鏈結設定為 視覺物件的內容,然後可讓您將交換鏈結系結至可視化樹狀結構。 針對 XAML,SwapChainBackgroundPanel 類別會公開傳統 COM 介面 ISwapChainBackgroundPanelNative。 您可以使用 ISwapChainBackgroundPanelNative::SetSwapChain 方法系結至 XAML UI 圖形。 如需如何使用組合交換鏈結搭配 XAML 的 SwapChainBackgroundPanel 類別的詳細資訊,請參閱 DirectX 和 XAML Interop。
IDXGISwapChain::SetFullscreenState、IDXGISwapChain::ResizeTarget、IDXGISwapChain::GetContainingOutput、IDXGISwapChain1::GetHwnd 和 IDXGISwapChain::GetCoreWindow 方法在這種類型的交換鏈結上無效。 如果您在這種類型的交換鏈結上呼叫任何這些方法,它們就會失敗。
如需如何為交換鏈結的後台緩衝區選擇格式的詳細資訊,請參閱 轉換色彩空間的數據。
範例
如需示範如何使用 CreateSwapChainForComposition 的程式碼範例,請參閱 SwapChainPanel 和遊戲。
- 針對 WinRT XAML,ISwapChainPanelNative 和 ISwapChainBackgroundPanelNative 介面會在標頭中
windows.ui.xaml.media.dxinterop.h
宣告。 - 針對 Windows UI 連結庫 (WinUI) XAML,標頭中
microsoft.ui.xaml.media.dxinterop.h
會宣告 ISwapChainPanelNative 和 ISwapChainBackgroundPanelNative 介面。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | 適用於 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | dxgi1_2.h |
程式庫 | Dxgi.lib |