Bonjour,
Je maintiens un programme dont chaque classe s'occupe d'afficher sa "partie" en OpenGL.
Environ 140 fichiers, 50 classes. Ni trop gros, ni trop petit, humainement gérable.
C'était du vieux code OpenGL avec du gLbegin, gLvertex gLend partout...
Je rénove le programme et la transformation en OpenGL4 arrive petit à petit à quelque chose.
Chaque classe qui s'occupe d'afficher quelque chose gère ses propres fonctions d'affichage.
J'ai une classe spécialisée qui me charge mes shaders et qui me compile le tout, me donnant un shaderProgram .
Ainsi, pour chaque shader que j'emploie, je me retrouve avec ces portions de codes :
Pour les données:
Pour les méthodes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5//shader for first layer shaderProgram* shaderLayer; GLuint vboLayerPos; GLuint vaoLayer;
Le programme tourne mais ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void initLayerShader(); void initLayerParam(); void drawFirstLayer();
Autant avant mes classes d’affichage avaient peu de fonction, autant la je me retrouve avec 5 à 7 fonctions, pour chaque shader à utiliser, qui font que mes classes deviennent au final denses, difficiles à lire et que je sens bien que je copie/colle trop.
Je ne sais pas comment m'en sortir élégamment.
Comment faites vous pour gérer de nombreux shaders ? VAO ? VBO ?
J'aime pas les spaghettis.
Merci par avance !
Partager