Dès les premiers jours de l'IBM PC et de ses clones, le matériel de l'adaptateur d'affichage était très simple : un petit bloc de mémoire était dédié à une grille de cellules de caractères (80x25 caractères dans le mode standard), avec deux octets de mémoire pour chaque cellule. Un octet sélectionnait le caractère et l'autre ses "attributs" - couleurs d'avant-plan et d'arrière-plan et contrôle du clignotement pour les adaptateurs couleur ; gras, souligné, clignotant ou vidéo inversée pour les adaptateurs monochromes. Le matériel de sortie vidéo recherchait les pixels dans une table ROM de formes de caractères en fonction du contenu de la mémoire de caractères.
Afin d'offrir un certain degré d'indépendance matérielle, l'interface du BIOS avec la carte de caractères nécessitait l'exécution d'une interruption logicielle pour définir une seule cellule de caractère à l'écran. Cette procédure était lente et inefficace. Cependant, la mémoire de caractères était également directement adressable par le CPU, de sorte que si vous saviez quel matériel était présent, vous pouviez écrire directement dans la mémoire à la place. Quoi qu'il en soit, une fois défini, le caractère restait à l'écran jusqu'à ce qu'il soit modifié, et la mémoire de caractères totale avec laquelle vous deviez travailler était de 4 000 octets, soit à peu près la taille d'une texture couleur 32x32 d'aujourd'hui !
Dans les modes graphiques, la situation était similaire ; chaque pixel à l'écran est associé à un emplacement particulier dans la mémoire, et il existait une interface BIOS pour définir les pixels, mais les travaux de haute performance nécessitaient d'écrire directement dans la mémoire. Les normes ultérieures telles que VESA permettent au système d'effectuer quelques requêtes lentes basées sur le BIOS pour connaître la disposition de la mémoire du matériel, puis de travailler directement avec la mémoire. C'est ainsi qu'un système d'exploitation peut afficher des graphiques sans pilote spécialisé, bien que les systèmes d'exploitation modernes incluent également des pilotes de base pour le matériel de tous les grands fabricants de GPU. Même la carte NVidia la plus récente prend en charge plusieurs modes de rétrocompatibilité différents, qui remontent probablement jusqu'à IBM CGA.
Une différence importante entre les graphiques 3D et 2D est qu'en 2D, il n'est généralement pas nécessaire de redessiner l'ensemble de l'écran à chaque image. En 3D, si la caméra se déplace ne serait-ce qu'un tout petit peu, chaque pixel de l'écran peut changer ; en 2D, si vous ne faites pas défiler l'image, la majeure partie de l'écran restera inchangée d'une image à l'autre, et même si vous faites défiler l'image, vous pouvez généralement effectuer une copie rapide de mémoire à mémoire au lieu de recomposer l'ensemble de la scène. Il n'est donc pas nécessaire d'exécuter INT 10h pour chaque pixel à chaque image.
Source : Je suis vraiment vieux