Partager via


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 :

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.

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

Voir aussi