2.1 Le Color Buffer

Comme nous l'avons vu un peu plus haut, un FBO peut être considéré comme un écran caché au sein de la carte graphique, nous pouvons donc sans aucun problème faire n'importe quel rendu à l'intérieur. L'intérêt dans tout ça vient du fait que l'on peut modifier les pixels une fois qu'ils sont affichés, ce qui est impossible avec le véritable écran.

Ces fameux pixels sont contenus dans le Color Buffer, celui que nous nettoyons à chaque tour de boucle avec la constante GL_COLOR_BUFFER. Et si je peux vous apprendre quelque chose d'étonnant avec lui, c'est qu'il s'agit en fait d'une simple texture !

Oui, oui vous avez bien lu, le Color Buffer est une texture :

plop

C'est un peu logique puisque le but d'OpenGL est d'afficher des pixels sur un écran, et une texture est justement faite pour en contenir plein. L'avantage avec elle, c'est que nous pourrons l'utiliser dans un shader pour la modifier très facilement. Rajouter un effet sera donc un jeu d'enfant.

Ah j'ai une question : le Color Buffer de l'écran est lui-aussi une texture ?

Oui on peut dire ça comme ça. C'est comme si on avait une grosse texture, contenant l'affichage de notre scène, plaquée sur la fenêtre SDL.

Petite précision importante, les FBO peuvent contenir jusqu'à 16 Color Buffers. C'est-à-dire que vous pouvez afficher ou modifier votre rendu 16 fois dans le même FBO :

plop

Ceci est particulièrement utile si l'on souhaite stocker des données autres que celles relatives à l'affichage. Les ombres en sont un exemple car elles utilisent plusieurs Color Buffers pour stocker leurs données.

Mais bon, pour le moment nous n'en utiliserons qu'un seul ne vous en faites pas, c'est déjà bien assez.