Método IDXGIFactory2::CreateSwapChainForComposition (dxgi1_2.h)
Cria uma cadeia de troca que você pode usar para enviar conteúdo direct3D para a API DirectComposition , para a estrutura Windows.UI.Xaml ou para WinUI (Biblioteca de Interface do Usuário do Windows) XAML, para compor em uma janela.
Sintaxe
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 e versões anteriores do Direct3D, esse é um ponteiro para o dispositivo Direct3D para a cadeia de troca. Para Direct3D 12, esse é um ponteiro para uma fila de comandos direta (consulte ID3D12CommandQueue). Esse parâmetro não pode ser NULL. Drivers de software, como D3D_DRIVER_TYPE_REFERENCE, não têm suporte para cadeias de troca de composição.
[in] pDesc
Um ponteiro para uma estrutura DXGI_SWAP_CHAIN_DESC1 para a descrição da cadeia de troca. Esse parâmetro não pode ser NULL.
Você deve especificar o valor DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL no membro SwapEffect do DXGI_SWAP_CHAIN_DESC1 porque CreateSwapChainForComposition dá suporte apenas ao modelo de apresentação flip.
Você também deve especificar o valor de DXGI_SCALING_STRETCH no membro Scaling do DXGI_SWAP_CHAIN_DESC1.
[in, optional] pRestrictToOutput
Um ponteiro para a interface IDXGIOutput para a saída à qual restringir o conteúdo. Você também deve passar o sinalizador DXGI_PRESENT_RESTRICT_TO_OUTPUT em uma chamada IDXGISwapChain1::P resent1 para forçar o conteúdo a aparecer apagado em qualquer outra saída. Se você quiser restringir o conteúdo a uma saída diferente, deverá criar uma nova cadeia de troca. No entanto, você pode restringir condicionalmente o conteúdo com base no sinalizador DXGI_PRESENT_RESTRICT_TO_OUTPUT .
Defina esse parâmetro como NULL se você não quiser restringir o conteúdo a um destino de saída.
[out] ppSwapChain
Um ponteiro para uma variável que recebe um ponteiro para a interface IDXGISwapChain1 para a cadeia de troca criada por CreateSwapChainForComposition .
Retornar valor
CreateSwapChainForComposition retorna:
- S_OK se criou com êxito uma cadeia de troca.
- E_OUTOFMEMORY se a memória não estiver disponível para concluir a operação.
- DXGI_ERROR_INVALID_CALL se o aplicativo de chamada forneceu dados inválidos, por exemplo, se pDesc ou ppSwapChain for NULL.
- Possivelmente outros códigos de erro descritos no tópico DXGI_ERROR que são definidos pelo tipo de dispositivo que você passa para pDevice.
Atualização de plataforma para Windows 7: No Windows 7 ou Windows Server 2008 R2 com a Atualização de Plataforma para Windows 7 instalada, CreateSwapChainForComposition falha com E_NOTIMPL. Para obter mais informações sobre a Atualização de Plataforma para Windows 7, consulte Platform Update para Windows 7.
Comentários
Você pode usar cadeias de troca de composição com:
- Interface IDCompositionVisual do DirectComposition,
- Classes SwapChainPanel ou SwapChainBackgroundPanel do sistema XAML.
- Biblioteca de Interface do Usuário do Windows (WinUI) 3 Classes SwapChainPanel ou SwapChainBackgroundPanel da XAML.
Para DirectComposition, você pode chamar o método IDCompositionVisual::SetContent para definir a cadeia de troca como o conteúdo de um objeto visual, o que permite associar a cadeia de troca à árvore visual. Para XAML, a classe SwapChainBackgroundPanel expõe uma interface COM clássica ISwapChainBackgroundPanelNative. Você pode usar o método ISwapChainBackgroundPanelNative::SetSwapChain para associar ao grafo da interface do usuário XAML. Para obter informações sobre como usar cadeias de troca de composição com a classe SwapChainBackgroundPanel da XAML, consulte Interoperabilidade DirectX e XAML.
Os métodos IDXGISwapChain::SetFullscreenState, IDXGISwapChain::ResizeTarget, IDXGISwapChain::GetContainingOutput, IDXGISwapChain1::GetHwnd e IDXGISwapChain::GetCoreWindow não são válidos nesse tipo de cadeia de troca. Se você chamar qualquer um desses métodos nesse tipo de cadeia de troca, eles falharão.
Para obter informações sobre como escolher um formato para o buffer de fundo da cadeia de troca, consulte Convertendo dados para o espaço de cor.
Exemplos
Para obter um exemplo de código mostrando como usar CreateSwapChainForComposition, consulte SwapChainPanel e jogos.
- Para WinRT XAML, as interfaces ISwapChainPanelNative e ISwapChainBackgroundPanelNative são declaradas no
windows.ui.xaml.media.dxinterop.h
cabeçalho . - Para o XAML da WinUI (Biblioteca de Interface do Usuário do Windows), as interfaces ISwapChainPanelNative e ISwapChainBackgroundPanelNative são declaradas no
microsoft.ui.xaml.media.dxinterop.h
cabeçalho.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 e Atualização de Plataforma para Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | dxgi1_2.h |
Biblioteca | Dxgi.lib |