Метод IDXGIFactory2::CreateSwapChainForComposition (dxgi1_2.h)
Создает цепочку буферов, которую можно использовать для отправки содержимого Direct3D в API DirectComposition , на платформу Windows.UI.Xaml или xaml библиотеки пользовательского интерфейса Windows (WinUI) для создания в окне.
Синтаксис
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_EFFECT_FLIP_SEQUENTIAL в элементе SwapEffectDXGI_SWAP_CHAIN_DESC1 так как CreateSwapChainForComposition поддерживает только модель представления с отражением.
Необходимо также указать значение DXGI_SCALING_STRETCH в элементе МасштабированиеDXGI_SWAP_CHAIN_DESC1.
[in, optional] pRestrictToOutput
Указатель на интерфейс IDXGIOutput для выходных данных для ограничения содержимого. Кроме того, необходимо передать флаг DXGI_PRESENT_RESTRICT_TO_OUTPUT в вызове IDXGISwapChain1::P resent1 , чтобы содержимое было затемнено в любых других выходных данных. Если вы хотите ограничить содержимое другими выходными данными, необходимо создать новую цепочку буферов. Однако можно условно ограничить содержимое на основе флага DXGI_PRESENT_RESTRICT_TO_OUTPUT .
Задайте для этого параметра значение NULL , если вы не хотите ограничивать содержимое целевым объектом вывода.
[out] ppSwapChain
Указатель на переменную, которая получает указатель на интерфейс IDXGISwapChain1 для цепочки буферов, создаваемой CreateSwapChainForComposition .
Возвращаемое значение
CreateSwapChainForComposition возвращает:
- S_OK, если цепочка буферов успешно создана.
- E_OUTOFMEMORY, если память недоступна для завершения операции.
- DXGI_ERROR_INVALID_CALL , если вызывающее приложение предоставило недопустимые данные, например, если pDesc или ppSwapChain имеет значение NULL.
- Возможно, другие коды ошибок, описанные в разделе DXGI_ERROR , которые определяются типом устройства, передаваемого в pDevice.
Обновление платформы для Windows 7: В Windows 7 или Windows Server 2008 R2 с установленным обновлением платформы для Windows 7createSwapChainForComposition завершается сбоем с E_NOTIMPL. Дополнительные сведения об Обновлении платформы для Windows 7 см. в разделе Обновление платформы для Windows 7.
Комментарии
Вы можете использовать цепочки буферов композиции с помощью следующих способов:
- Интерфейс IDCompositionVisualdirectComposition,
- Классы SwapChainPanel или SwapChainBackgroundPanel системного XAML.
- Библиотека пользовательского интерфейса Windows (WinUI) 3 Классы SwapChainPanel или SwapChainBackgroundPanel XAML.
Для DirectComposition можно вызвать метод IDCompositionVisual::SetContent , чтобы задать цепочку буферов в качестве содержимого визуального объекта, что позволяет привязать цепочку буферов к визуальному дереву. Для XAML класс SwapChainBackgroundPanel предоставляет классический COM-интерфейс ISwapChainBackgroundPanelNative. Для привязки к графу пользовательского интерфейса XAML можно использовать метод ISwapChainBackgroundPanelNative::SetSwapChain . Сведения об использовании цепочек буферов композиции с классом SwapChainBackgroundPanel XAML см. в разделе Взаимодействие DirectX и XAML.
Методы IDXGISwapChain::SetFullscreenState, IDXGISwapChain::ResizeTarget, IDXGISwapChain::GetContainingOutput, IDXGISwapChain1::GetHwnd и IDXGISwapChain::GetCoreWindow недопустимы для этого типа цепочки буферов. Если вы вызываете любой из этих методов в цепочке буферов этого типа, они завершаются ошибкой.
Сведения о том, как выбрать формат для обратного буфера цепочки буферов, см. в разделе Преобразование данных для цветового пространства.
Примеры
Пример кода, демонстрирующий использование CreateSwapChainForComposition, см. в разделе SwapChainPanel и игры.
- Для WINRT XAML в заголовке объявляются
windows.ui.xaml.media.dxinterop.h
интерфейсы ISwapChainPanelNative и ISwapChainBackgroundPanelNative. - Для XAML библиотеки пользовательского интерфейса Windows (WinUI) в заголовке объявляются
microsoft.ui.xaml.media.dxinterop.h
интерфейсы ISwapChainPanelNative и ISwapChainBackgroundPanelNative.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | dxgi1_2.h |
Библиотека | Dxgi.lib |