Bonjour à tous,

Voilà, je me lance dans un loader de .obj, et je dois dire que je galère pas mal.
J'ai beaucoup de questions, mais les autres interviendront quand j'aurai résolu mon petit problème.

VOilà, j'ai utilisé le tuto de Bakura sur les VBO afin d'afficher un simple cube. Seulement cela ne fonctionne pas. Aucun plantage, mais aucun rendu.

Voilà comment je m'y prends pour 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
void  Geometry::createVBO()
{
    // Create and bind a BO for vertex data
    glGenBuffers(1, &vbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vbuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertexattributes), vertexattributes, GL_STATIC_DRAW);
 
 
    // Create and bind a BO for index data
    glGenBuffers(1, &ibuffer);
    glBindBuffer(GL_ARRAY_BUFFER, ibuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(m_indices3), m_indices3, GL_STATIC_DRAW);
 
    // On récupère les emplacements des deux attributs dans le shader
    vertexPositionAttrib = glGetAttribLocation (m_shaderCouleur.getProgramID(), "VertexPosition");
    vertexColorAttrib = glGetAttribLocation (m_shaderCouleur.getProgramID(), "VertexColor");
}
 
void Geometry::drawVBO(Matrix4& projection, Matrix4& modelview) const
{
 
    // Activation du shader et des tableaux Vertex Attrib
    glUseProgram(m_shaderCouleur.getProgramID());
 
    glUniformMatrix4fv(glGetUniformLocation(m_shaderCouleur.getProgramID(), "projection"), 1, GL_TRUE, projection.getValeurs());
    glUniformMatrix4fv(glGetUniformLocation(m_shaderCouleur.getProgramID(), "modelview"), 1, GL_TRUE, modelview.getValeurs());
 
    // Activation des tableaux génériques
    glEnableVertexAttribArray(vertexPositionAttrib);
    glEnableVertexAttribArray(vertexColorAttrib);
 
    // Active les données VB
    glBindBuffer(GL_ARRAY_BUFFER, vbuffer);
 
    // Envoi des vertices et des matrices
    glVertexAttribPointer(vertexPositionAttrib, 3, GL_DOUBLE, GL_FALSE, sizeof(double)*6, (float *) NULL + (0));
    glVertexAttribPointer(vertexColorAttrib, 3, GL_DOUBLE, GL_FALSE, sizeof(double)*6, (float *) NULL + (3));
 
    // Active les données IB
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibuffer);
    cout <<"avant drawelement"<<endl;
    glDrawElements(GL_TRIANGLES, nb_tri*3, GL_UNSIGNED_INT, 0);
    cout <<"apres drawelement"<<endl;
 
 
/*
    if(nb_tri > 0)
        glDrawElements(GL_TRIANGLES, nb_tri*3, GL_UNSIGNED_INT, m_indices3);
 
    if(nb_qua > 0)
        glDrawElements(GL_QUADS, nb_qua*4, GL_UNSIGNED_INT, m_indices4);
*/
 
    // Désactivation des tableaux Vertex Attrib et du shader
    glDisableVertexAttribArray(vertexColorAttrib);
    glDisableVertexAttribArray(vertexPositionAttrib);
    glUseProgram(0);
 
}
Mon tableau vertexattributes est vérifié et contient les bonnes données : (3 valeurs positions suivies de 3 valeurs couleurs). Mon shader fonctionne puisque j'ai déjà un rendu sans utiliser les VBO, mais en utilisant un tableau de couleurs et un tableau de vertex.

Je dois avouer être assez sceptique, tout me semble en ordre, mais rien ne se passe... :/
En espérant que ca parleraà quelqu'un ! Merci d'avance