Bonsoir,
J'ai un problème lorsque que je souhaite dessiner un objet à partir d'un buffer ( ce n'est pas un VBO ), ce buffer contient la couleur du vertex (3, GL_FLOAT) suivit de la position du vertex (3, GL_FLOAT).
un petit exemple simple :
Vector3F V[8];
V[0] = Vector3F(1.0f,0.0f,0.0f); // couleur vertex 0
V[1] = Vector3F(16.0f,16.0f,16.0f); // position vertex 0
V[2] = Vector3F(0.0f,1.0f,0.0f); // etc...
V[3] = Vector3F(16.0f,17.0f,16.0f);
V[4] = Vector3F(0.0f,0.0f,1.0f);
V[5] = Vector3F(16.0f,16.0f,17.0f);
V[6] = Vector3F(1.0f,0.0f,0.0f);
V[7] = Vector3F(17.0f,16.0f,16.0f);
en utilisant :
glInterleavedArrays(GL_C3F_V3F, 0, &V[0]);
glDrawArrays(GL_LINE_STRIP, 0, 4);
L'objet s'affiche correctement, avec les bonnes couleurs, mais en utilisant :
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(Vector3F), (GLubyte *) (&V[0]) + sizeof(Vector3F));
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(3, GL_FLOAT, sizeof(Vector3F), (GLubyte *) (&V[0]) );
glDrawArrays(GL_LINE_STRIP, 0, 4);
J'obtient un objet ou certains vertices utilisent les coordonnées des couleurs et vice-versa. Il y a clairement un problème d'offset et de stride mais même en essayant plusieurs valeurs je n'arrive pas a obtenir mon objet.
ps : sizeof(Vector3F) = 12 octets
Après vérification il semble que la valeur mise dans le paramètre Stride n'est pas prise en compte ...
Partager