Compartir a través de


Método IDXGIFactory2::CreateSwapChainForComposition (dxgi1_2.h)

Crea una cadena de intercambio que puedes usar para enviar contenido de Direct3D a la API directComposition , al marco Windows.UI.Xaml o a XAML de la Biblioteca de interfaz de usuario de Windows (WinUI) para redactarlo en una ventana.

Sintaxis

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

Parámetros

[in] pDevice

Para Direct3D 11 y versiones anteriores de Direct3D, se trata de un puntero al dispositivo Direct3D para la cadena de intercambio. Para Direct3D 12, es un puntero a una cola de comandos directa (consulte ID3D12CommandQueue). Este parámetro no puede ser NULL. Los controladores de software, como D3D_DRIVER_TYPE_REFERENCE, no se admiten para las cadenas de intercambio de composición.

[in] pDesc

Puntero a una estructura de DXGI_SWAP_CHAIN_DESC1 para la descripción de la cadena de intercambio. Este parámetro no puede ser NULL.

Debe especificar el valor de DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL en el miembro SwapEffect de DXGI_SWAP_CHAIN_DESC1 porque CreateSwapChainForComposition solo admite el modelo de presentación invertida.

También debe especificar el valor DXGI_SCALING_STRETCH en el miembro Scaling de DXGI_SWAP_CHAIN_DESC1.

[in, optional] pRestrictToOutput

Puntero a la interfaz IDXGIOutput para que la salida restrinja el contenido. También debe pasar la marca de DXGI_PRESENT_RESTRICT_TO_OUTPUT en una llamada IDXGISwapChain1::P resent1 para forzar que el contenido aparezca atenuado en cualquier otra salida. Si desea restringir el contenido a una salida diferente, debe crear una nueva cadena de intercambio. Sin embargo, puede restringir condicionalmente el contenido en función de la marca DXGI_PRESENT_RESTRICT_TO_OUTPUT .

Establezca este parámetro en NULL si no desea restringir el contenido a un destino de salida.

[out] ppSwapChain

Puntero a una variable que recibe un puntero a la interfaz IDXGISwapChain1 de la cadena de intercambio que crea CreateSwapChainForComposition .

Valor devuelto

CreateSwapChainForComposition devuelve:

  • S_OK si creó correctamente una cadena de intercambio.
  • E_OUTOFMEMORY si la memoria no está disponible para completar la operación.
  • DXGI_ERROR_INVALID_CALL si la aplicación que realiza la llamada proporcionó datos no válidos, por ejemplo, si pDesc o ppSwapChain es NULL.
  • Posiblemente otros códigos de error que se describen en el tema DXGI_ERROR definidos por el tipo de dispositivo que se pasa a pDevice.

Actualización de la plataforma para Windows 7: En Windows 7 o Windows Server 2008 R2 con la actualización de plataforma para Windows 7 instalada, CreateSwapChainForComposition genera un error con E_NOTIMPL. Para obtener más información sobre la actualización de plataforma para Windows 7, consulta Actualización de plataforma para Windows 7.

Comentarios

Puede usar cadenas de intercambio de composición con:

Para DirectComposition, puede llamar al método IDCompositionVisual::SetContent para establecer la cadena de intercambio como el contenido de un objeto visual, lo que le permite enlazar la cadena de intercambio al árbol visual. Para XAML, la clase SwapChainBackgroundPanel expone una interfaz COM clásica ISwapChainBackgroundPanelNative. Puedes usar el método ISwapChainBackgroundPanelNative::SetSwapChain para enlazar al gráfico de la interfaz de usuario XAML. Para obtener información sobre cómo usar cadenas de intercambio de composición con la clase SwapChainBackgroundPanel de XAML, consulta Interoperabilidad de DirectX y XAML.

Los métodos IDXGISwapChain::SetFullscreenState, IDXGISwapChain::ResizeTarget, IDXGISwapChain::GetContainingOutput, IDXGISwapChain1::GetHwnd y IDXGISwapChain::GetCoreWindow no son válidos en este tipo de cadena de intercambio. Si llama a cualquiera de estos métodos en este tipo de cadena de intercambio, se producirá un error.

Para obtener información sobre cómo elegir un formato para el búfer de reserva de la cadena de intercambio, consulte Conversión de datos para el espacio de colores.

Ejemplos

Para obtener un ejemplo de código que muestra cómo usar CreateSwapChainForComposition, consulta SwapChainPanel y juegos.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 y Actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 y actualización de plataforma para Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado dxgi1_2.h
Library Dxgi.lib

Consulte también