« Les cartes graphiques/Les cartes d'affichage » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 138 :
Si le ''framebuffer'' a une taille suffisante, il peut mémoriser plusieurs images sans problèmes. On pourrait croire que ce n'est pas utile, mais diverses techniques dites de '''''multibuffering''''' utilisent cette possibilité. L'idée derrière les techniques de ''multibuffering'' est de calculer plusieurs images en avance et de les mémoriser celles-ci dans le ''framebuffer''.
 
Prenons le cas du '''''double buffering''''', où le ''framebuffer'' peut mémoriser deux images. ChaqueLe image''framebuffer'' est mémoriséealors dansdivisé uneen portiondeux duportions, ''framebuffer''une par image, auquelauquelles nous donnerons le nom de tampons d'affichage. La ''framebuffer'L'idée peutest mémoriser deux tampons d'affichage. On peut alorsde mémoriser une l'image dontqui les'affiche calculà est terminéel'écran dans le premier tampon d'affichage et une image en cours de calcul dans le second. LLe tampon pour l'image dontaffichée s'appelle le calcultampon estavant, terminéeou s'afficheencore àle l'écran'front buffer'', alors que celui avec l'autre image est en cours de calcul s'appelle le ''back buffer''.
 
[[File:Double buffering.png|centre|vignette|upright=2|Double buffering]]
 
Quand l'image dans le ''back-buffer'' est complète, elle est copiée dans le ''front buffer'' pour être affichée. L'ancienne image dans le ''front buffer'' est donc éliminée au profit de la nouvelle image. Le remplacement peut se faire par une copie réelle, l'image étant copiée le premier tampon vers le second. Mais une solution plus simple consiste à intervertir les deux tampons, le ''back buffer'' devenant le ''front buffer'' et réciproquement. Une telle interversion fait qu'on a pas besoin de copier les données de l'image, ce qui est une opération très lente. L'interversion des deux tampons peut se faire au niveau matériel. Rappelez-vous que plus haut, nous avions vu qu'il y a un circuit qui détermine l'adresse du pixel à lire à partir de deux compteurs X et Y, ainsi que de l'adresse du premier pixel. L'adresse du premier pixel n'est autre que l'adresse à laquelle commence le ''front buffer''. En changeant cette adresse pour la faire pointer vers le ''back-buffer'', l’interversion se fait automatiquement et le circuit lira alors directement depuis l'ancien ''back-buffer''.
Quand le calcul de la seconde image est terminé, on peut faire face à deux situations, suivant que le remplacement des deux images est synchronisée avec l'écran, ou non.
 
Quand le calcul de la seconde image est terminé, onOn peut faire face à deux situations, suivant que le remplacement des deux images est synchronisée avec l'écran, ou non.
* Dans le premier cas, l'image calculée remplace immédiatement l'image précédente. Cela permet d'afficher au plus vite la seconde image, mais peut entrainer des artefacts d'affichage, comme on le verra plus bas.
* Dans le second cas, on attend que la première image soit affichée avant de faire le remplacement.