[Explication] Double Buffering

Salut ! Me revoilà après un loooong moment d’abscence.
Bon aujourd’hui je vais vous parler du « Double Buffering ».
Keke c’est que ca ? Le Double Buffering plutôt compliqué au premier abord, mais par la suite, tout devient clair.

Petit cours sur la VRAM:

Sur un ordinateur, télé ou tout autres choses qui affichent une image, il y’a ce qu’on appel la VRAM (Video Random Access Memory), la VRAM sert à stocker les informations des éléments qui doivent être affichés. Enfaite, elle construit l’image qui sera affiché à l’écran.
Au début des ordinateurs, la VRAM sérvait à afficher des caractères sur l’écrans, elle pouvait éventuellement, plus tard, stocké des graphismes simples (par exemple les jeux sous DOS).
Maintenant, une carte graphique à beaaaaucoup plus d’utilisation (bien qu’elles soit fondées sur le même principe), elle permet de stocker des textures, des objets en 3D, des images ect… MAIS le plus importants et qu’elle utilise le concepte du Double Buffering (j’y viens).

Le Double Buffering:

Passons maintenant au concepte même de ce truc cool.
Le Double Buffering est tout simplement un Double Buffer (eh oui…), qui permet à l’utilisateur de ne pas avoir de clignotement entre les transitions d’images. Pour ceux qui ne savent pas, l’ordinateur marche comme une télé mais en mieux. Par exemple, dans n’importe quelle jeu (plus ou moins modernes), les programmeurs utilise les FPS, pas le type de jeu, mais « Frame Per Second », aussi dit IPS pour les Français (Image Par Seconde). Un jeu tourne généralement à 60 FPS, donc en une seconde il y a 60 frames, soit 60 images, ce qui nous donnes donc l’illusion du mouvement et chaque frame est enregistrée dans la VRAM, qui est ensuite modifié pour être frame + 1. Après sur un OS je ne sais pas du tout à combien ca tourne, mais ca doit être un chiffre du genre.
Le Double Buffering consiste à ne pas afficher tout de suite l’image, mais à la stocker dans un buffer créé spécialement. Une fois stocké dans le buffer, le buffer est copié dans la mémoire vidéo et est donc affiché. Une fois affiché, le buffer est éffacé pour pouvoir réécrire dessus si besoin. Et on recommence…
Un petit exemple:

Le seul inconvénient, c’est qu’il faut 1 partie de mémoire dans la RAM (Double Buffer) et une dans la VRAM. Mais ce « sacrifice » en vaut la peine, surtout sur des machines modernes. Sauf sur Windows 32bits évidemment (:D). 
Après il existe le Triple Buffering (je vois pas l’interet), qui consiste à avoir 2 buffers au lieu de 1.
Merci d’avoir lu, et à la prochaine 😀 bisous !

2 réflexions sur “[Explication] Double Buffering

  1. L'intérêt du « triple buffering », c'est le gain de performance qu'il offre.
    En effet, avec le « double buffering », le programme doit attendre que le dessin dans le second « buffer » soit fini, pour copier dans la mémoire vidéo et ensuite recommencer en dessinant une autre « frame ».
    Le « triple buffering », lui, permet au programme de redessiner une seconde « frame » (dans un troisième « buffer ») directement après la première (dans le second « buffer »), pendant que cette dernière est copiée dans la mémoire vidéo. On n'a pas à attendre que la copie du second « buffer » dans la mémoire vidéo soit terminée pour continuer.

    En attendant, article intéressant (bien que j'aurais apprécié quelques codes démonstratifs), je partage. 😉

  2. Je te remercies de ta réponse :). Après un code, c'est assez dur. Puisque c'est automatiquement géré dans la SDL, SFML et tout ca. A part peut être avec le mode 13h, je vois pas trop.

Répondre à Quentin Pubert Annuler la réponse.