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 |