3.8.3 Quelques getters

On termine cette partie avec quelques getters qui nous serviront à manipuler nos FBO sans problème. Nous en aurons exactement besoin de quatre : le premier permettra de récupérer l'identifiant du FBO, le deuxième permettra de récupérer ceux des différents Color Buffer et les deux derniers s'occuperont de renvoyer la largeur et la hauteur. Voici leur prototype :

1
2
3
4
5
GLuint getID() const;
GLuint getColorBufferID(unsigned int index) const;

int getLargeur() const;
int getHauteur() const;

\begin Remarquez que le second getter prend en paramètre une variable de type unsigned int qui permettra de récupérer un Color Buffer dans le tableau-attribut m_colorBuffers. \end

L'implémentation de la première méthode se passe de commentaire, il suffit de renvoyer la valeur de l'attribut m_id :

1
2
3
GLuint FrameBuffer::getID() const{
	return m_id;
}

Au niveau de la seconde méthode, on ne peut pas se contenter de renvoyer l'attribut m_colorBuffers car cela casserait la règle de l'encapsulation (il ne faut pas pouvoir accéder à un attribut en dehors de sa classe d'origine). A la place, nous allons utiliser un index pour récupérer une texture dans ce tableau et appeler ensuite sa propre méthode getID(). De cette façon, on peut renvoyer l'identifiant du Color Buffer souhaité sans avoir à accéder directement à l'attribut m_colorBuffers en dehors de la classe.

1
2
3
GLuint FrameBuffer::getColorBufferID(unsigned int index) const{
	return m_colorBuffers[index].getID();
}

Les deux derniers getters renverront simplement les attributs m_largeur et m_hauteur :

1
2
3
4
5
6
7
int FrameBuffer::getLargeur() const{
	return m_largeur;
}

int FrameBuffer::getHauteur() const{
	return m_hauteur;
}

Grâce à ces getters, nous pourrons utiliser nos FBO facilement. Et c'est justement ce que nous allons faire maintenant.