Bonjour,

Je cherche a afficher un cube grace aux VBO.
Les données du cube ainsi que le code sont issus du lien :http://raptor.developpez.com/tutorial/opengl/vbo/#LII-C.

je stock le cube dans un fichier .obj
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
21
22
v -1.0 1.0 -1.0
v -1.0 -1.0 -1.0
v -1.0 1.0 1.0
v -1.0 -1.0 1.0
v 1.0 1.0 1.0
v 1.0 -1.0 1.0
v 1.0 1.0 -1.0
v 1.0 -1.0 -1.0
 
f 0 1 2
f 0 1 2
f 2 1 3
f 4 5 6
f 6 5 7 
f 3 1 5 
f 5 1 7 
f 0 2 6 
f 6 2 4 
f 6 7 0 
f 0 7 1 
f 2 3 4 
f 4 3 5
Mon VBO contient les vertex dans e meme ordre que le fichier .obj.
Les index sont également stockés dans le mm ordre sue le fichier .obj.

Voici comment j'initialise mon VBO
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
21
22
logger.info("MESH init " + objet.getStructure().getModelFile());
        VertexBufferObjectStructure vbo = objet.getStructure().getVertexBufferObject();
 
        // Generate a new buffer object
        // Bind the buffer object
        this.nbVertices = vbo.getNbVertices();
        this.verticesId = generateID();
        logger.info("MESH V id " + verticesId);
        openGLContext.getGl().glBindBuffer(GL2.GL_ARRAY_BUFFER, verticesId);
        openGLContext.getGl().glBufferData(GL2.GL_ARRAY_BUFFER,
                GLBuffers.sizeOfBufferElem(vbo.getVertexData()) * GLBuffers.SIZEOF_FLOAT,
                // vbo.getVertexData().capacity() * GLBuffers.SIZEOF_FLOAT,
                vbo.getVertexData(), GL2.GL_STATIC_DRAW);
 
        // Index vertices
        this.nbIndex = vbo.getIndexNb();
        this.indexId = generateID();
        logger.info("MESH index id " + indexId);
        openGLContext.getGl().glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, indexId);
        openGLContext.getGl().glBufferData(GL2.GL_ELEMENT_ARRAY_BUFFER,
                GLBuffers.sizeOfBufferElem(vbo.getIndexV()) * GLBuffers.SIZEOF_INT, vbo.getIndexV(),
                GL2.GL_STATIC_DRAW);
et voici la fonction pour le display
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
public void render() {
        OpenGLContext openGLContext = GLContextManager.getInstance().getOpenGLContext();
        // vertices
        openGLContext.getGl().glBindBuffer(GL2.GL_ARRAY_BUFFER, verticesId);
        openGLContext.getGl().glVertexPointer(3, GL2.GL_FLOAT, 3 * GLBuffers.SIZEOF_FLOAT, 0);
 
        // index
        openGLContext.getGl().glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, indexId);
 
        // Enable Pointers
        openGLContext.getGl().glEnableClientState(GL2.GL_VERTEX_ARRAY); // Enable Vertex
 
        openGLContext.getGl().glDrawElements(GL2.GL_TRIANGLES, nbIndex, GL2.GL_UNSIGNED_INT, 0);
        // gl.glDrawElements(GL.GL_TRIANGLES, nbIndex, GL.GL_UNSIGNED_INT, 0);
 
        // Disable Pointers
        openGLContext.getGl().glDisableClientState(GL2.GL_VERTEX_ARRAY); // Disable Vertex
 
    }
Mon rendu n'est pas bon, je n'avance pas beaucoup...
Malgré tout pouvez vous me dire si mon code est a priori correct ???

Merci d'avance