Condividi tramite


Metodo IDXGIFactory2::CreateSwapChainForComposition (dxgi1_2.h)

Crea una catena di scambio che è possibile usare per inviare contenuto Direct3D all'API DirectComposition , al framework Windows.UI.Xaml o al codice XAML di Windows UI Library (WinUI) per comporre in una finestra.

Sintassi

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

Parametri

[in] pDevice

Per Direct3D 11 e versioni precedenti di Direct3D, si tratta di un puntatore al dispositivo Direct3D per la catena di scambio. Per Direct3D 12 si tratta di un puntatore a una coda di comandi diretta (fare riferimento a ID3D12CommandQueue). Questo parametro non può essere NULL. I driver software, come D3D_DRIVER_TYPE_REFERENCE, non sono supportati per le catene di scambio di composizione.

[in] pDesc

Puntatore a una struttura DXGI_SWAP_CHAIN_DESC1 per la descrizione della catena di scambio. Questo parametro non può essere NULL.

È necessario specificare il valore di DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL nel membro SwapEffect di DXGI_SWAP_CHAIN_DESC1 perché CreateSwapChainForComposition supporta solo il modello di presentazione capovolto.

È anche necessario specificare il valore DXGI_SCALING_STRETCH nel membro Ridimensionamento di DXGI_SWAP_CHAIN_DESC1.

[in, optional] pRestrictToOutput

Puntatore all'interfaccia IDXGIOutput per l'output a cui limitare il contenuto. È anche necessario passare il flag di DXGI_PRESENT_RESTRICT_TO_OUTPUT in un IDXGISwapChain1::P resent1 per forzare la visualizzazione del contenuto in un altro output. Se si vuole limitare il contenuto a un output diverso, è necessario creare una nuova catena di scambio. Tuttavia, è possibile limitare in modo condizionale il contenuto in base al flag di DXGI_PRESENT_RESTRICT_TO_OUTPUT .

Impostare questo parametro su NULL se non si vuole limitare il contenuto a una destinazione di output.

[out] ppSwapChain

Puntatore a una variabile che riceve un puntatore all'interfaccia IDXGISwapChain1 per la catena di scambio creata da CreateSwapChainForComposition .

Valore restituito

CreateSwapChainForComposition restituisce :

  • S_OK se ha creato correttamente una catena di scambio.
  • E_OUTOFMEMORY se la memoria non è disponibile per completare l'operazione.
  • DXGI_ERROR_INVALID_CALL se l'applicazione chiamante ha fornito dati non validi, ad esempio se pDesc o ppSwapChain è NULL.
  • Eventualmente altri codici di errore descritti nell'argomento DXGI_ERROR definiti dal tipo di dispositivo passato a pDevice.

Aggiornamento della piattaforma per Windows 7: In Windows 7 o Windows Server 2008 R2 con l'aggiornamento della piattaforma per Windows 7 installato , CreateSwapChainForComposition ha esito negativo con E_NOTIMPL. Per altre informazioni sull'aggiornamento della piattaforma per Windows 7, vedere Platform Update per Windows 7.

Commenti

È possibile usare catene di scambio di composizione con:

Per DirectComposition è possibile chiamare il metodo IDCompositionVisual::SetContent per impostare la catena di scambio come contenuto di un oggetto visivo, che consente quindi di associare la catena di scambio all'albero visivo. Per XAML, la classe SwapChainBackgroundPanel espone un'interfaccia COM classica ISwapChainBackgroundPanelNative. È possibile usare il metodo ISwapChainBackgroundPanelNative::SetSwapChain per eseguire il binding al grafico dell'interfaccia utente XAML. Per informazioni su come usare catene di scambio di composizione con la classe SwapChainBackgroundPanel di XAML, vedere Interoperabilità DirectX e XAML.

I metodi IDXGISwapChain::SetFullscreenState, IDXGISwapChain::ResizeTarget, IDXGISwapChain::GetContainingOutput, IDXGISwapChain1::GetHwnd e IDXGISwapChain::GetCoreWindow non sono validi in questo tipo di catena di scambio. Se si chiama uno di questi metodi su questo tipo di catena di scambio, hanno esito negativo.

Per informazioni su come scegliere un formato per il buffer indietro della catena di scambio, vedere Conversione dei dati per lo spazio dei colori.

Esempio

Per un esempio di codice che mostra come usare CreateSwapChainForComposition, vedere SwapChainPanel e giochi.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 e Aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione dxgi1_2.h
Libreria Dxgi.lib

Vedi anche