IDXGISwapChain ::P resent, méthode (dxgi.h)

Présente une image rendue à l’utilisateur.

Syntaxe

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

Paramètres

SyncInterval

Type : UINT

Entier qui spécifie comment synchroniser la présentation d’un cadre avec le vide vertical.

Pour le modèle de transfert de bloc binaire (bitblt ) (DXGI_SWAP_EFFECT_DISCARD ou DXGI_SWAP_EFFECT_SEQUENTIAL), les valeurs sont les suivantes :

  • 0 - La présentation se produit immédiatement, il n’y a aucune synchronisation.
  • 1 à 4 - Synchroniser la présentation après le nièmevide vertical.
Pour le modèle de retournement (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL), les valeurs sont les suivantes :
  • 0 : annulez le temps restant sur l’image présentée précédemment et ignorez cette trame si une image plus récente est mise en file d’attente.
  • 1 à 4 : synchroniser la présentation pour au moins n espaces verticaux.
Pour obtenir un exemple montrant comment les valeurs de l’intervalle de synchronisation affectent une file d’attente de présentation inversée, consultez Remarques.

Si la région de mise à jour est à cheval sur plusieurs sorties (chacune représentée par IDXGIOutput), Present effectue la synchronisation avec la sortie qui contient le plus grand sous-rectangle de la zone cliente de la fenêtre cible.

Flags

Type : UINT

Valeur entière qui contient les options de présentation de la chaîne d’échange. Ces options sont définies par les constantes DXGI_PRESENT .

Valeur retournée

Type : HRESULT

Les valeurs de retour possibles sont les suivantes : S_OK, DXGI_ERROR_DEVICE_RESET ou DXGI_ERROR_DEVICE_REMOVED (voir DXGI_ERROR), DXGI_STATUS_OCCLUDED (voir DXGI_STATUS) ou D3DDDIERR_DEVICEREMOVED.

Note La méthode Present peut retourner DXGI_ERROR_DEVICE_REMOVED ou D3DDDIERR_DEVICEREMOVED si une carte vidéo a été physiquement supprimée de l’ordinateur, ou si une mise à niveau du pilote pour le carte vidéo s’est produite.
 

Remarques

À compter de Direct3D 11.1, envisagez d’utiliser IDXGISwapChain1 ::P resent1, car vous pouvez ensuite utiliser sale rectangles et le rectangle de défilement dans la présentation de la chaîne d’échange et, par conséquent, utiliser moins de bande passante mémoire et, par conséquent, moins de puissance du système. Pour plus d’informations sur l’utilisation de rectangles sale et le rectangle de défilement dans la présentation de la chaîne d’échange, consultez Utilisation de rectangles sale et du rectangle de défilement dans la présentation de la chaîne d’échange.

Pour obtenir de meilleures performances lors du basculement des mémoires tampons de chaîne d’échange dans une application plein écran, consultez Indicateurs de performances des applications plein écran.

Étant donné que l’appel de Present peut entraîner l’attente du thread de rendu sur le thread de pompe de messages, soyez prudent lorsque vous appelez cette méthode dans une application qui utilise plusieurs threads. Pour plus d’informations, consultez Considérations relatives au multithreading.

Différences entre Direct3D 9 et Direct3D 10 :

La spécification de DXGI_PRESENT_TEST dans le paramètre Flags est analogue à IDirect3DDevice9 ::TestCooperativeLevel dans Direct3D 9.

Pour les chaînes d’échange de modèle de présentation inversées que vous créez avec le DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL ou DXGI_SWAP_EFFECT_DISCARD jeu de valeurs, une présentation réussie dissocie la mémoire tampon 0 (généralement définie par OMSetRenderTargets) du pipeline graphique, sauf lorsque vous passez l’indicateur DXGI_PRESENT_DO_NOT_SEQUENCE dans le paramètre Flags .

Pour plus d’informations sur la façon dont les valeurs de données changent lorsque vous présentez du contenu à l’écran, consultez Conversion de données pour l’espace de couleurs.

File d’attente du modèle de présentation flip

Supposons que les images suivantes avec des valeurs d’intervalle de synchronisation soient mises en file d’attente du plus ancien (A) au plus récent (E) avant d’appeler Present.

A : 3, B : 0, C : 0, D : 1, E : 0

Lorsque vous appelez Present, le runtime affiche l’image A pour un seul intervalle vide vertical. Le runtime termine l’image A tôt en raison de l’intervalle de synchronisation 0 dans l’image B. Ensuite, le runtime affiche l’image D pour un intervalle vide vertical, puis l’image E jusqu’à ce que vous envoyiez une nouvelle présentation. Le runtime ignore les trames B et C.

Taux d’actualisation variable affiché

Il est nécessaire que la vitesse de rafraîchissement variable affiche que la déchirure soit activée. La méthode CheckFeatureSupport peut être utilisée pour déterminer si cette fonctionnalité est disponible. Pour définir les indicateurs requis, reportez-vous aux descriptions des DXGI_PRESENT_ALLOW_TEARING et des DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING, ainsi qu’à l’affichage de la fréquence d’actualisation variable.

Configuration requise

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

Voir aussi

IDXGISwapChain