IDirect3DDevice9 ::Reset, méthode (d3d9.h)
Réinitialise le type, la taille et le format de la chaîne d’échange.
Syntaxe
HRESULT Reset(
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);
Paramètres
[in, out] pPresentationParameters
Type : D3DPRESENT_PARAMETERS*
Pointeur vers une structure D3DPRESENT_PARAMETERS , décrivant les nouveaux paramètres de présentation. Cette valeur ne peut pas être NULL.
Lorsque vous passez en mode plein écran, Direct3D essaie de trouver un format de bureau qui correspond au format de mémoire tampon arrière, afin que les formats mémoire tampon arrière et mémoire tampon avant soient identiques (pour éliminer la nécessité de la conversion de couleur).
Lorsque cette méthode retourne :
- BackBufferCount, BackBufferWidth et BackBufferHeight sont définis sur zéro.
- BackBufferFormat est défini sur D3DFMT_UNKNOWN pour le mode fenêtré uniquement ; un mode plein écran doit spécifier un format.
Valeur retournée
Type : HRESULT
Les valeurs de retour possibles sont les suivantes : D3D_OK, D3DERR_DEVICELOST, D3DERR_DEVICEREMOVED, D3DERR_DRIVERINTERNALERROR ou D3DERR_OUTOFVIDEOMEMORY (voir D3DERR).
Remarques
Si un appel à IDirect3DDevice9 ::Reset échoue, l’appareil est placé à l’état « perdu » (comme indiqué par une valeur de retour de D3DERR_DEVICELOST à partir d’un appel à IDirect3DDevice9 ::TestCooperativeLevel), sauf s’il est déjà à l’état « non réinitialisé » (comme indiqué par une valeur de retour de D3DERR_DEVICENOTRESET à partir d’un appel à IDirect3DDevice9 ::TestCooperativeLevel). Reportez-vous à IDirect3DDevice9 ::TestCooperativeLevel and Lost Devices (Direct3D 9) pour plus d’informations sur l’utilisation d’IDirect3DDevice9 ::Reset dans le contexte d’appareils perdus.
L’appel de IDirect3DDevice9 ::Reset entraîne la perte de toutes les surfaces de mémoire de texture, la vidage des textures gérées de la mémoire vidéo et la perte de toutes les informations d’état. Avant d’appeler la méthode IDirect3DDevice9 ::Reset pour un appareil, une application doit libérer les cibles de rendu explicites, les surfaces de gabarit de profondeur, les chaînes d’échange supplémentaires, les blocs d’état et les ressources D3DPOOL_DEFAULT associées à l’appareil.
Il existe deux types de chaînes d’échange : plein écran ou fenêtré. Si la nouvelle chaîne d’échange est en plein écran, l’adaptateur est placé en mode d’affichage correspondant à la nouvelle taille.
Les applications Direct3D 9 peuvent s’attendre à ce que des messages leur soient envoyés pendant cet appel (par exemple, avant que cet appel ne soit retourné) ; les applications doivent prendre des précautions pour ne pas appeler Direct3D pour le moment. En outre, lorsque IDirect3DDevice9 ::Reset échoue, les seules méthodes valides qui peuvent être appelées sont IDirect3DDevice9 ::Reset, IDirect3DDevice9 ::TestCooperativeLevel et les différentes fonctions membres Release. L’appel de n’importe quelle autre méthode peut entraîner une exception.
Un appel à IDirect3DDevice9 ::Reset échoue s’il est appelé sur un thread différent de celui utilisé pour créer l’appareil en cours de réinitialisation.
Les nuanceurs de pixels et les nuanceurs de vertex survivent aux appels IDirect3DDevice9 ::Réinitialiser pour Direct3D 9. Ils n’ont pas besoin d’être recréé explicitement par l’application.
D3DFMT_UNKNOWN peut être spécifié pour le format de mémoire tampon arrière en mode fenêtré lors de l’appel de IDirect3D9 ::CreateDevice, IDirect3DDevice9 ::Reset et IDirect3DDevice9 ::CreateAdditionalSwapChain. Cela signifie que l’application n’a pas besoin d’interroger le format de bureau actuel avant d’appeler IDirect3D9 ::CreateDevice pour le mode fenêtré. Pour le mode plein écran, le format de mémoire tampon arrière doit être spécifié. La définition de BackBufferCount comme égal à zéro (BackBufferCount = 0) entraîne la création d’une mémoire tampon arrière.
Lorsque vous essayez de réinitialiser plusieurs cartes d’affichage dans un groupe, définissez pPresentationParameters pour qu’il pointe vers un tableau de structures D3DPRESENT_PARAMETERS , une pour chaque affichage dans le groupe d’adaptateurs.
Si un appareil multi-tête a été créé avec D3DCREATE_ADAPTERGROUP_DEVICE, IDirect3DDevice9 ::Reset nécessite un tableau de structures D3DPRESENT_PARAMETERS où chaque structure doit spécifier un affichage en plein écran. Pour revenir au mode fenêtré, l’application doit détruire l’appareil et recréer un appareil non multihead en mode fenêtré.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d9.h (inclure D3D9.h) |
Bibliothèque | D3D9.lib |