IDXGIFactory2 ::CreateSwapChainForComposition, méthode (dxgi1_2.h)
Crée une chaîne d’échange que vous pouvez utiliser pour envoyer du contenu Direct3D à l’API DirectComposition , à l’infrastructure Windows.UI.Xaml ou à la bibliothèque d’interface utilisateur Windows (WinUI) XAML à composer dans une fenêtre.
Syntaxe
HRESULT CreateSwapChainForComposition(
[in] IUnknown *pDevice,
[in] const DXGI_SWAP_CHAIN_DESC1 *pDesc,
[in, optional] IDXGIOutput *pRestrictToOutput,
[out] IDXGISwapChain1 **ppSwapChain
);
Paramètres
[in] pDevice
Pour Direct3D 11 et les versions antérieures de Direct3D, il s’agit d’un pointeur vers l’appareil Direct3D pour la chaîne d’échange. Pour Direct3D 12, il s’agit d’un pointeur vers une file d’attente de commandes directes (reportez-vous à ID3D12CommandQueue). Ce paramètre ne peut pas avoir la valeur NULL. Les pilotes logiciels, comme D3D_DRIVER_TYPE_REFERENCE, ne sont pas pris en charge pour les chaînes d’échange de composition.
[in] pDesc
Pointeur vers une structure DXGI_SWAP_CHAIN_DESC1 pour la description de la chaîne d’échange. Ce paramètre ne peut pas avoir la valeur NULL.
Vous devez spécifier la valeur DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL dans le membre SwapEffect de DXGI_SWAP_CHAIN_DESC1 , car CreateSwapChainForComposition prend uniquement en charge le modèle de présentation inversé.
Vous devez également spécifier la valeur DXGI_SCALING_STRETCH dans le membre De mise à l’échelle de DXGI_SWAP_CHAIN_DESC1.
[in, optional] pRestrictToOutput
Pointeur vers l’interface IDXGIOutput pour la sortie à laquelle restreindre le contenu. Vous devez également passer l’indicateur DXGI_PRESENT_RESTRICT_TO_OUTPUT dans un appel IDXGISwapChain1 ::P resent1 pour forcer le contenu à apparaître noirci sur toute autre sortie. Si vous souhaitez limiter le contenu à une autre sortie, vous devez créer une chaîne d’échange. Toutefois, vous pouvez restreindre de manière conditionnelle le contenu en fonction de l’indicateur DXGI_PRESENT_RESTRICT_TO_OUTPUT .
Définissez ce paramètre sur NULL si vous ne souhaitez pas restreindre le contenu à une cible de sortie.
[out] ppSwapChain
Pointeur vers une variable qui reçoit un pointeur vers l’interface IDXGISwapChain1 pour la chaîne d’échange créée par CreateSwapChainForComposition .
Valeur retournée
CreateSwapChainForComposition retourne :
- S_OK s’il a correctement créé une chaîne d’échange.
- E_OUTOFMEMORY si la mémoire n’est pas disponible pour terminer l’opération.
- DXGI_ERROR_INVALID_CALL si l’application appelante a fourni des données non valides, par exemple si pDesc ou ppSwapChain a la valeur NULL.
- Peut-être d’autres codes d’erreur décrits dans la rubrique DXGI_ERROR qui sont définis par le type d’appareil que vous passez à pDevice.
Mise à jour de la plateforme pour Windows 7 : Sur Windows 7 ou Windows Server 2008 R2 avec la mise à jour de la plateforme pour Windows 7 installée, CreateSwapChainForComposition échoue avec E_NOTIMPL. Pour plus d’informations sur la mise à jour de plateforme pour Windows 7, consultez Mise à jour de plateforme pour Windows 7.
Remarques
Vous pouvez utiliser des chaînes d’échange de composition avec :
- L’interface IDCompositionVisual de DirectComposition,
- Classes SwapChainPanel ou SwapChainBackgroundPanel du système XAML.
- Bibliothèque d’interface utilisateur Windows (WinUI) 3 Classes SwapChainPanel ou SwapChainBackgroundPanel de XAML.
Pour DirectComposition, vous pouvez appeler la méthode IDCompositionVisual ::SetContent pour définir la chaîne d’échange comme contenu d’un objet visuel, ce qui vous permet ensuite de lier la chaîne d’échange à l’arborescence visuelle. Pour XAML, la classe SwapChainBackgroundPanel expose une interface COM classique ISwapChainBackgroundPanelNative. Vous pouvez utiliser la méthode ISwapChainBackgroundPanelNative ::SetSwapChain pour lier au graphique d’interface utilisateur XAML. Pour plus d’informations sur l’utilisation des chaînes d’échange de composition avec la classe SwapChainBackgroundPanel de XAML, consultez DirectX et l’interopérabilité XAML.
Les méthodes IDXGISwapChain ::SetFullscreenState, IDXGISwapChain ::ResizeTarget, IDXGISwapChain ::GetContainingOutput, IDXGISwapChain1 ::GetHwnd et IDXGISwapChain ::GetCoreWindow ne sont pas valides sur ce type de chaîne d’échange. Si vous appelez l’une de ces méthodes sur ce type de chaîne d’échange, elles échouent.
Pour plus d’informations sur le choix d’un format pour la mémoire tampon arrière de la chaîne d’échange, consultez Conversion de données pour l’espace de couleur.
Exemples
Pour obtenir un exemple de code montrant comment utiliser CreateSwapChainForComposition, consultez SwapChainPanel et les jeux.
- Pour WinRT XAML, les interfaces ISwapChainPanelNative et ISwapChainBackgroundPanelNative sont déclarées dans l’en-tête
windows.ui.xaml.media.dxinterop.h
. - Pour le XAML de la bibliothèque d’interface utilisateur Windows (WinUI), les interfaces ISwapChainPanelNative et ISwapChainBackgroundPanelNative sont déclarées dans l’en-tête
microsoft.ui.xaml.media.dxinterop.h
.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2012 et mise à jour de plateforme pour Windows Server 2008 R2 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | dxgi1_2.h |
Bibliothèque | Dxgi.lib |