« Les cartes graphiques/Les cartes accélératrices 2D » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Page créée avec « Avec l'arrivée des jeux vidéo, les cartes graphiques ont pu s'adapter. Les premiers jeux vidéos étaient tous des jeux 2D qui donnaient l'illusion de la 3D. Les cartes... »
(Aucune différence)

Version du 14 novembre 2016 à 18:59

Avec l'arrivée des jeux vidéo, les cartes graphiques ont pu s'adapter. Les premiers jeux vidéos étaient tous des jeux 2D qui donnaient l'illusion de la 3D. Les cartes graphiques 2D ont d'abord commencé par accélérer le tracé et coloriage de figures géométriques simples : lignes, segments, cercles, ellipses, etc. Ces fonctions permettaient d’accélérer les premières interfaces graphiques des systèmes d'exploitation. Les cartes graphiques actuelles supportent aussi d'autres technologies, comme des techniques d’accélération du rendu des polices d'écriture, une accélération du scrolling, des accélérateurs d'affichage pour les bibliothèques GDI (utilisées sous Windows), ou encore un support matériel du curseur de la souris.

Blitter

Par la suite, les cartes 2D ont introduit un composant très utile pour l'époque : le blitter. Dans sa version la plus simple, ce blitter sert à accélérer les copies de données d'un endroit de la mémoire vidéo à un autre. Ce genre de copie arrive souvent lorsqu'on doit scroller, ou qu'un objet 2D se déplace sur l'écran. Déplacer une fenêtre sur votre bureau est un bon exemple : le contenu de ce qui était présent sur l'écran doit être déplacé vers le haut ou vers le bas. Dans la mémoire vidéo, cela correspond à une copie des pixels correspondant de leur ancienne position vers la nouvelle.

Cela a aussi des applications dans les jeux en 2D. La base d'un rendu 2D est de superposer des images les unes au-dessus des autres. Par exemple, on peut avoir une image pour l’arrière plan(le décor), une image pour le monstre qui vous fonce dessus, une image pour le dessin de votre personnage, etc. Ces images sont superposées sur l’arrière-plan au bon endroit sur l'écran, ce qui se traduit par une copie des pixels de l'image aux bons endroits dans la mémoire.

Créer un circuit juste pour faire des copies en mémoire et quelques opérations bit à bit peu sembler bizarre. Mais il y a de bonnes raisons à cela. Lorsque ce circuit a été inventé, le screen buffer des cartes graphiques était accessible par le processeur, qui pouvait lire et écrire directement dedans. Ces copies étaient donc à la charge du processeur, qui devait déplacer lui-même les données en mémoire. Pour ce faire, un petit morceau de programme répétait en boucle une série d'instructions pour copier les données pixel par pixel. Le blitter est conçu pour ce genre de tâches, sauf qu'il n'utilise pas le processeur. Ceci dit, un blitter possède d'autres fonctionnalités. Il peut effectuer une opération bit à bit entre les données à copier et une données fournie par le programmeur.

Pour voir à quoi cela peut servir, reprenons notre exemple du jeu 2D, basé sur une superposition d'images. Les images des différents personnages sont souvent des images rectangulaires. Par exemple, l'image correspondant à notre bon vieux pacman ressemblerait à celle-ci. Évidemment, cette image s'interface mal avec l’arrière-plan. Avec un arrière-plan blanc, les parties noires de l'image du pacman se verraient à l'écran.

Image de Pacman.
Image de Pacman.

L'idéal serait de ne pas toucher à l’arrière-plan sur les pixels noirs de pacman, et de ne modifier l’arrière-plan que pour les pixels jaunes. Ceci est possible en fournissant un masque, une image qui indique quels pixels modifier lors d'un transfert, et quels sont ceux qui ne doivent pas changer. Grâce à ce masque, le blitter sait quels pixels modifier. Le blitter prend l'image du pacman, le morceau de l’arrière-plan auquel on superpose pacman, et le masque. Pour chaque pixel, il effectue l'opération suivante : ((arrière-plan) AND (masque)) OR (image de pacman). Au final, l'image finale est bel et bien celle qu'on attend.

Masque de Pacman.
Masque de Pacman.