Qu’est-ce qu’une chaîne d’échange ? (Direct3D 9)

Une chaîne d’échange est une collection de mémoires tampons qui sont utilisées pour afficher des cadres à l’utilisateur. Chaque fois qu’une application présente une nouvelle image pour l’affichage, la première mémoire tampon de la chaîne d’échange remplace la mémoire tampon affichée. Ce processus est appelé permutation ou retournement.

Une carte graphique contient un pointeur vers une surface qui représente l’image affichée sur le moniteur, appelée mémoire tampon avant. À mesure que le moniteur est actualisé, le graphique carte envoie le contenu de la mémoire tampon avant au moniteur à afficher. Toutefois, cela entraîne un problème lors du rendu des graphiques en temps réel. Le cœur du problème est que les fréquences d’actualisation des moniteurs sont très lentes par rapport au reste de l’ordinateur. Les fréquences de rafraîchissement courantes vont de 60 Hz (60 fois par seconde) à 100 Hz. Si votre application met à jour la mémoire tampon avant alors que le moniteur se trouve au milieu d’une actualisation, l’image affichée est coupée en deux, la moitié supérieure de l’affichage contenant l’ancienne image et la moitié inférieure contenant la nouvelle image. Ce problème est appelé déchirure.

Direct3D implémente deux options pour éviter la déchirure :

  • Option permettant d’autoriser uniquement les mises à jour du moniteur sur l’opération de retracement vertical (ou de synchronisation verticale). Un moniteur actualise généralement son image en déplaçant horizontalement une broche de lumière, en zigzagant en haut à gauche du moniteur et en se terminant en bas à droite. Lorsque la broche de lumière atteint le bas, le moniteur réétalonne la broche de lumière en la déplaçant vers le coin supérieur gauche afin que le processus puisse recommencer. Ce réétalonnage est appelé synchronisation verticale. Pendant une synchronisation verticale, le moniteur ne dessine rien, de sorte que toute mise à jour de la mémoire tampon avant ne sera pas visible tant que le moniteur ne recommencera pas à dessiner. La synchronisation verticale est relativement lente; Toutefois, il n’est pas assez lent pour restituer une scène complexe en attendant. Ce qui est nécessaire pour éviter les déchirures et être en mesure de restituer des scènes complexes est un processus appelé mise en mémoire tampon.
  • Option permettant d’utiliser une technique appelée mise en mémoire tampon différée. La mise en mémoire tampon arrière est le processus de dessin d’une scène sur une surface hors écran, appelée mémoire tampon arrière. Notez que toute surface autre que la mémoire tampon avant est appelée surface hors écran, car elle n’est jamais affichée directement par le moniteur. En utilisant une mémoire tampon d’arrière-plan, une application a la liberté de restituer une scène chaque fois que le système est inactif (autrement dit, aucun message Windows n’est en attente) sans avoir à prendre en compte la fréquence d’actualisation du moniteur. La mise en mémoire tampon d’arrière-plan entraîne une complication supplémentaire de la façon et du moment de déplacer la mémoire tampon d’arrière-plan vers la mémoire tampon avant.

Le processus de déplacement de la mémoire tampon d’arrière vers la mémoire tampon avant est appelé retournement de surface. Étant donné que les graphiques carte utilisent simplement un pointeur vers une surface pour représenter la mémoire tampon avant, il suffit d’un simple changement de pointeur pour définir la mémoire tampon d’arrière-plan sur la mémoire tampon avant. Lorsqu’une application demande à Direct3D de présenter la mémoire tampon d’arrière-plan à la mémoire tampon avant, Direct3D « retourne » simplement les deux pointeurs de surface. Le résultat est que la mémoire tampon d’arrière-plan est désormais la nouvelle mémoire tampon avant, et l’ancienne mémoire tampon avant est la nouvelle mémoire tampon d’arrière-plan. Un retournement de surface est appelé chaque fois qu’une application demande à l’appareil Direct3D de présenter la mémoire tampon d’arrière-mémoire . Toutefois, Direct3D peut être configuré pour mettre en file d’attente les demandes jusqu’à ce qu’une synchronisation verticale se produise. Cette option est appelée intervalle de présentation de l’appareil Direct3D. Notez que les données de la nouvelle mémoire tampon d’arrière-mémoire peuvent ne pas être réutilisables, selon la façon dont une application spécifie comment Direct3D doit gérer le retournement de surface. Le retournement surface est un élément clé dans les logiciels multimédias, d’animation et de jeux. cela équivaut à la façon dont vous pouvez faire de l’animation avec une feuille de papier. Sur chaque page, l’artiste modifie légèrement les figures, de sorte que lorsque vous basculez rapidement entre les feuilles, le dessin apparaît animé.

Direct3D Surfaces

Surfaces de basculement (Direct3D 9)