Partager via


Chaînes de permutation

Une chaîne d’échange est une collection de mémoires tampons utilisées pour afficher des images à 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 prend la place de la mémoire tampon affichée. Ce processus est appelé permutation ou détourage.

Une carte graphique contient un pointeur vers une surface qui représente l’image affichée sur le moniteur, appelée mémoire tampon frontale. À mesure que le moniteur est actualisé, la carte graphique envoie le contenu de la mémoire tampon frontale à l’écran à afficher. Toutefois, cela entraîne un problème de « larme » lors du rendu de graphiques en temps réel. Le cœur du problème est que les taux d’actualisation du moniteur sont très lents par rapport au reste de l’ordinateur. Les taux d’actualisation courants vont de 60 Hz (60 fois par seconde) à 100 Hz.

Si votre application met à jour la mémoire tampon frontale pendant que le moniteur est au milieu d’une actualisation, l’image affichée est coupée en moitié avec 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.

Éviter la déchirure

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

  • Option permettant uniquement d’autoriser les mises à jour du moniteur sur l’opération de retrace verticale (ou de synchronisation verticale). Un moniteur actualise généralement son image en déplaçant horizontalement une broche légère, zigzagging du haut à gauche du moniteur et se terminant en bas à droite. Lorsque la broche de lumière atteint le bas, le moniteur recalibre l’épingle de lumière en le déplaçant vers le haut à gauche afin que le processus puisse recommencer.

    Cette recalibration est appelée synchronisation verticale. Pendant une synchronisation verticale, le moniteur ne dessine rien, de sorte que toute mise à jour vers la mémoire tampon frontale ne sera pas visible tant que le moniteur ne commencera pas à dessiner à nouveau. La synchronisation verticale est relativement lente ; toutefois, pas assez lent pour restituer une scène complexe en attendant. Ce qui est nécessaire pour éviter la déchirure et être en mesure de restituer des scènes complexes est un processus appelé mise en mémoire tampon arrière.

  • 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 d’arrière-plan. Toute surface autre que la mémoire tampon avant est appelée surface hors écran, car elle n’est jamais directement affichée par le moniteur.

    En utilisant une mémoire tampon arrière, une application a la liberté de restituer une scène chaque fois que le système est inactif (autrement dit, aucun message Windows n’attend) sans avoir à prendre en compte le taux d’actualisation du moniteur. La mise en mémoire tampon de retour entraîne une complication supplémentaire de la façon et du moment de déplacer la mémoire tampon de retour vers la mémoire tampon avant.

Découpage de surface

Le processus de déplacement de la mémoire tampon arrière vers la mémoire tampon avant est appelé glissement de surface. Étant donné que la carte graphique utilise simplement un pointeur vers une surface pour représenter la mémoire tampon frontale, une modification simple du pointeur est tout ce qui est nécessaire pour définir la mémoire tampon arrière sur la mémoire tampon frontale. Lorsqu’une application demande à Direct3D de présenter la mémoire tampon arrière à 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 maintenant la nouvelle mémoire tampon frontale et que l’ancienne mémoire tampon frontale est la nouvelle mémoire tampon de retour.

Un retournement de surface est appelé chaque fois qu’une application demande à l’appareil Direct3D de présenter la mémoire tampon de retour ; Toutefois, Direct3D peut être configuré pour mettre en file d’attente les requêtes jusqu’à ce qu’une synchronisation verticale se produise. Cette option est appelée intervalle de présentation de l’appareil Direct3D. 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 glissement de surface.

Le découpage surface est clé dans les logiciels multimédias, d’animation et de jeu ; il équivaut à la façon dont vous pouvez faire l’animation avec un pavé de papier. Sur chaque page, l’artiste change légèrement les figures, de sorte que lorsque vous basculez rapidement entre les feuilles, le dessin apparaît animé.

Appareils