Bonjour,
je viens poser une question sur laquelle je m'arrache les cheveux depuis un sacré moment:
je voudrais afficher un objet 3D chargé à partir d'un fichier .obj
jusque là, tout va bien, l'obj se charge parfaitement
là où ça se gâte, c'est que je voudrais utiliser un VBO pour afficher cet objet, et là, c'est le drame: il ne m'affiche qu'une partie des polygones que je veux.
au niveau du code, voilà ce que ça donne:
initialisation du VBO
où myVBO est un vector contenant des floats représentant les coordonnées des points
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 static const GLsizeiptr tailleVBO = myVBO.size()*sizeof(GLfloat); glGenBuffersARB(1, &VBOid); glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBOid); glBufferDataARB(GL_ARRAY_BUFFER_ARB, tailleVBO, &(myVBO[0]), GL_STATIC_DRAW_ARB); VBOsize = myVBO.size();
pour la boucle d'affichage, voilà ce que ça donne:
là où ça coince, c'est que par exemple, lorsque je charge un obj qui ressemble à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 glBindBuffer(GL_ARRAY_BUFFER_ARB, VBOid); glVertexPointer(3, GL_FLOAT, 0, (char *)NULL); glEnableClientState(GL_VERTEX_ARRAY); glDrawArrays(GL_QUADS, 0, VBOsize);
il ne m'affiche qu'un polygone au lieu de 3...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 # Vertex list 1 v -0.3 -0.3 0 2 v -0.3 0.3 0 3 v 0.3 0.3 0 4 v 0.3 -0.3 0 5 v -0.3 -0.3 -0.4 6 v -0.3 0.3 -0.4 7 v 0.3 0.3 -0.4 8 v 0.3 -0.3 -0.4 # Point/Line/Face list usemtl Default f 4 3 2 1 f 2 6 5 1 f 8 7 3 4
si vous avez une idée du pourquoi du comment, vous êtes un héros, parce que j'ai retourné le problème dans tous les sens sans trouver de solution
merci d'avance
Partager