1.2 Les Frame Buffers

Cette parenthèse étant faite, nous allons pouvoir passer au sujet principal qui concerne les Frame Buffer Objets ou FBO. Vous l'aurez deviné, nous allons encore voir des objets OpenGL.

Pour donner une définition simple d'un FBO, on pourrait dire qu'il s'agit d'un écran caché qui utilise les 3 types de buffers que nous avons vus à l'instant :

plop

Si j'utilise le terme d'écran caché c'est que les FBO permettent de faire ce que l'on appelle un rendu off-screen (en dehors de l'écran). C'est-à-dire qu'au lieu d'afficher votre scène dans votre fenêtre, vous le ferrez dans un endroit à part dans la carte graphique comme s'il y en avait une deuxième à l'intérieure. Le rendu sera exactement le même sauf que vous ne le verrez pas directement.

À quoi ça sert d'afficher quelque chose si on ne le voit pas ?

C'est quelque chose d'un peu tordu au premier abord mais je pense que vous allez vite aimer les FBO quand vous connaîtrez les possibilités qu'ils offrent. En étant associés aux shaders, ils permettent de faire plein d'effets réalistes tels que :

  • Le flou : pour la vitesse ou l'éblouissement
  • Les reflets : pour les miroirs et l'eau
  • Les ombres dynamiques : qui sont modifiées à chaque fois que leur "modèle" bouge
  • La capture vidéo : pour filmer un endroit tout en étant dans un autre (caméra de surveillance, télévision, etc.)

Une bonne palette d'effets sympathiques en somme.

Petit détail pour terminer : votre écran lui-même est considéré comme un Frame Buffer. Il reprend donc toutes les caractéristiques dont nous venons de parler, sauf pour les effets réalistes parce qu'il est impossible de modifier les pixels une fois qu'ils sont affichés sur l'écran.