Bonjour à tous,
Initié depuis peu à openGL, je me suis mis aux vbo sans passer par la case vertex arrays.
L'objet que je veux afficher compte 2500 sommets, 4802 faces mais seulement une dizaine de couleurs diffèrentes. J'ai donc créé un tableau de 2500 indexes qui pointent une des dix couleurs du tableau colors.
Je n'ai pas trouvé de tutoriaux traitant de ce sujet précis, et je ne parviens pas à faire en sorte qu'openGL utilise ma liste d'indexes de couleurs.
Extrait du code, l'initialisation :
glGenBuffers (4, ObjBuffers);
/*buffer vertex*/
glBindBuffer (GL_ARRAY_BUFFER, ObjBuffers[0]);
glBufferData (GL_ARRAY_BUFFER, sizeof (vertices), vertices, GL_STATIC_DRAW);
/*buffer indices*/
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, ObjBuffers[1]);
glBufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices, GL_STATIC_DRAW);
/*buffer couleurs*/
glBindBuffer (GL_ARRAY_BUFFER, ObjBuffers[2]);
glBufferData (GL_ARRAY_BUFFER, sizeof (colors), colors, GL_STATIC_DRAW);
/*buffer indxColors */
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, ObjBuffers[3]);
glBufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indxColors), indxColors, GL_STATIC_DRAW);
...Et puis l'affichage :
glBindBuffer (GL_ARRAY_BUFFER, ObjBuffers[0]);
glVertexPointer (3, GL_FLOAT, 0, 0);
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, ObjBuffers[1]);
glBindBuffer (GL_ARRAY_BUFFER, ObjBuffers[2]);
glColorPointer (3, GL_FLOAT, 0, 0);
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, ObjBuffers[3]);
glIndexPointer (GL_INT, 0, 0);
glDrawElements (GL_TRIANGLES, 14406, GL_UNSIGNED_INT, 0);
...Mais ça ne marche pas : Les triangles sont soit noirs, soit transparants.
L'ajout ou non de glEnableClientState (GL_INDEX_ARRAY) n'y change rien.
Merci de me faire profiter de votre expérience et m'aider à avancer...
Partager