Salut !
J’essai de refaire ma fonction d’affichage pour qu’elle utilise les VBO.
Le problème c’est que j’utilise glDrawElements et je n’arrive pas a l’utiliser dans les VBO
Voici en gros mon code sans utiliser de VBO :
J’ai deja testé un code du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(3, GL_FLOAT, 0, getVertices()); glNormalPointer(GL_FLOAT, 0, getNormals()); glBindTexture(GL_TEXTURE_2D, mesh[meshId].subMesh[submeshId].getTextureId()); glTexCoordPointer(2, GL_FLOAT, 0, mesh[meshId].subMesh[submeshId].getTexture()); glDrawElements(GL_TRIANGLES, mesh[meshId].subMesh[submeshId].getTailleFaces(), GL_UNSIGNED_INT, getFace()); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_VERTEX_ARRAY);
mais ca m’affiche du n’importe quoi
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
18
19
20 glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glBindBufferARB(GL_ARRAY_BUFFER_ARB, bufferVertex); glVertexPointer(3, GL_FLOAT, 0, 0); glBindBufferARB(GL_ARRAY_BUFFER_ARB, bufferNormal); glVertexPointer(3, GL_FLOAT, 0, 0); glBindBufferARB(GL_ARRAY_BUFFER_ARB, bufferTexture); glVertexPointer(3, GL_FLOAT, 0, 0); glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, bufferFaces); glDrawElements(GL_TRIANGLES, getTailleFaces(), GL_UNSIGNED_INT, 0); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_VERTEX_ARRAY);
comment faire ?
Merci
Partager