| ||||||||||
Maintenant que nous avons un Render Buffer généré, il ne nous reste plus qu'à le configurer. Cette étape commence évidemment par le "verrouillage" de façon à ce qu'OpenGL sache sur quel objet il doit travailler. Nous utiliserons pour cela la fonction glBindRenderbuffer() :
Nous appellerons cette fonction deux fois : une fois pour le verrouillage et une autre pour le déverrouillage. Le premier appel prendra en paramètre l'identifiant à verrouiller tandis que le second prendra la valeur 0 :
Le Render Buffer est à présent verrouillé et prêt à être configuré. Cette opération va d'ailleurs être beaucoup plus simple que celle des autres objets OpenGL car nous n'avons besoin ici que d'une seule et unique fonction. La fonction en question peut d'ailleurs nous faire penser à glTexImage2D() car elle permet de définir le format et les dimensions du Render Buffer. Elle possède cependant moins de paramètres qu'elle, ce qui la rend tout de même plus agréable à utiliser. Cette fameuse fonction s'appelle glRenderbufferStorage() :
Vous vous souvenez du paramètre formatInterne dont je vous parlé tout à l'heure ? Celui de la méthode creerRenderBuffer() ? Et bien c'est ici que nous allons l'utiliser. Ce dernier permet de définir le "type" de donnée à stocker dans le buffer. Par exemple, les données relatives à la profondeur (Depth) ne sont pas du tout les mêmes que celles relatives aux pochoirs (Stencil), et pourtant ce sont tous les deux des Render Buffers. Pour marquer cette différence, il faut indiquer dès maintenant le type de donnée qu’accueillera le buffer. Pour cela, nous allons donner le paramètre formatInterne à la fonction glRenderbufferStorage(). Nous lui donnerons également les dimensions du FBO à l'aide des attributs m_largeur et m_hauteur :
Avec cet appel, nous demandons à créer un Render Buffer du type donné par le paramètre formatInterne (nous verrons ses valeurs possibles dans la partie qui suit) le tout avec les dimensions de notre FBO initial. Si on ajoute ceci à notre méthode, on obtient :
La méthode creerRenderBuffer() est maintenant terminée, nous pouvons l'utiliser quand bon nous semble. C'est d'ailleurs ce que nous allons faire tout de suite en utilisant tout ce que l'on vient de faire (Color et Render Buffers) dans le but de créer enfin notre premier FBO | ||||||||||
|