IDXGISwapChain::ResizeBuffers, méthode (dxgi.h)

Modifie la taille, le format et le nombre de mémoires tampons arrière de la chaîne d’échange. Cela doit être appelé lorsque la fenêtre d’application est redimensionnée.

Syntaxe

HRESULT ResizeBuffers(
  UINT        BufferCount,
  UINT        Width,
  UINT        Height,
  DXGI_FORMAT NewFormat,
  UINT        SwapChainFlags
);

Paramètres

BufferCount

Type : UINT

Nombre de mémoires tampons dans la chaîne d’échange (y compris toutes les mémoires tampons arrière et avant). Ce nombre peut être différent du nombre de mémoires tampons avec lesquelles vous avez créé la chaîne d’échange. Ce nombre ne peut pas être supérieur à DXGI_MAX_SWAP_CHAIN_BUFFERS. Définissez ce nombre sur zéro pour conserver le nombre existant de mémoires tampons dans la chaîne d’échange. Vous ne pouvez pas spécifier moins de deux mémoires tampons pour le modèle de présentation inversée.

Width

Type : UINT

Nouvelle largeur de la mémoire tampon arrière. Si vous spécifiez zéro, DXGI utilise la largeur de la zone cliente de la fenêtre cible. Vous ne pouvez pas spécifier la largeur comme zéro si vous avez appelé la méthode IDXGIFactory2::CreateSwapChainForComposition pour créer la chaîne d’échange pour une surface de composition.

Height

Type : UINT

Nouvelle hauteur de la mémoire tampon arrière. Si vous spécifiez zéro, DXGI utilise la hauteur de la zone cliente de la fenêtre cible. Vous ne pouvez pas spécifier la hauteur sur zéro si vous avez appelé la méthode IDXGIFactory2::CreateSwapChainForComposition pour créer la chaîne d’échange pour une surface de composition.

NewFormat

Type : DXGI_FORMAT

Valeur de type DXGI_FORMAT pour le nouveau format de la mémoire tampon arrière. Définissez cette valeur sur DXGI_FORMAT_UNKNOWN pour conserver le format existant de la mémoire tampon arrière. Le modèle de présentation inversée prend en charge un ensemble de formats plus restreint que le modèle de transfert de bloc de bits (bitblt).

SwapChainFlags

Type : UINT

Combinaison de valeurs de type DXGI_SWAP_CHAIN_FLAG qui sont combinées à l’aide d’une opération OR au niveau du bit. La valeur résultante spécifie des options pour le comportement de la chaîne d’échange.

Valeur retournée

Type : HRESULT

Retourne S_OK en cas de réussite ; un code d’erreur dans le cas contraire. Pour obtenir la liste des codes d’erreur, consultez DXGI_ERROR.

Notes

Vous ne pouvez pas redimensionner une chaîne d’échange, sauf si vous relâchez toutes les références en suspens à ses mémoires tampons arrière. Vous devez libérer toutes ses références directes et indirectes sur les mémoires tampons arrière pour que ResizeBuffers réussisse.

Les références directes sont conservées par l’application après avoir appelé AddRef sur une ressource.

Les références indirectes sont conservées par les vues à une ressource, liant une vue de la ressource à un contexte d’appareil, une liste de commandes qui a utilisé la ressource, une liste de commandes qui a utilisé une vue à cette ressource, une liste de commandes qui a exécuté une autre liste de commandes qui a utilisé la ressource, et ainsi de suite.

Avant d’appeler ResizeBuffers, assurez-vous que l’application libère toutes les références (en appelant le nombre approprié d’appels de mise en production ) sur les ressources, les vues sur la ressource et les listes de commandes qui utilisent les ressources ou les vues, et assurez-vous que ni la ressource ni une vue n’est toujours liée à un contexte d’appareil. Vous pouvez utiliser ID3D11DeviceContext::ClearState pour vous assurer que toutes les références sont publiées. Si une vue est liée à un contexte différé, vous devez également ignorer la liste de commandes partiellement créée (en appelant ID3D11DeviceContext::ClearState, puis ID3D11DeviceContext::FinishCommandList, puis Release dans la liste de commandes). Après avoir appelé ResizeBuffers, vous pouvez interroger à nouveau les interfaces via IDXGISwapChain::GetBuffer.

Pour les chaînes d’échange que vous avez créées avec DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE, avant d’appeler ResizeBuffers, appelez également IDXGISurface1::ReleaseDC sur la surface de mémoire tampon arrière de la chaîne d’échange pour vous assurer qu’aucun contexte d’appareil GDI en cours n’est ouvert.

Nous vous recommandons d’appeler ResizeBuffers lorsqu’une fenêtre cliente est redimensionnée (autrement dit, lorsqu’une application reçoit un message WM_SIZE).

La seule différence entre IDXGISwapChain::ResizeBuffers dans Windows 8 et Windows 7 est avec les chaînes d’échange de modèles de présentation inversées que vous créez avec le DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL ou DXGI_SWAP_EFFECT_FLIP_DISCARD valeur définie. Dans Windows 8, vous devez appeler ResizeBuffers pour effectuer une transition entre le mode plein écran et le mode fenêtré ; sinon, votre prochain appel à la méthode IDXGISwapChain::P resent échoue.

Spécifications

   
Plateforme cible Windows
En-tête dxgi.h
Bibliothèque DXGI.lib

Voir aussi

IDXGISwapChain