Bonjour,
Je me remet à opengl, et je souhaite utiliser les VAO et les VBO.
J'arrive au code suivant pour enregistrer la géométrie:
et pour dessiner, simplement un:
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 glEnable(GL_VERTEX_ARRAY); glGenVertexArrays(1, &m_vao); glBindVertexArray(m_vao); glGenBuffers(1, &m_tabIndex[ShapeEInfoTab_VERTEX]); glGenBuffers(1, &m_tabIndex[ShapeEInfoTab_INDEX]); glBindBuffer(GL_ARRAY_BUFFER, m_tabIndex[ShapeEInfoTab_VERTEX]); glBufferData(GL_ARRAY_BUFFER, sizeof(m_geometry.points), m_geometry.points, GL_STATIC_DRAW); glEnableVertexAttribArray(glGetAttribLocation(m_program.getProgId(), "position")); glVertexAttribPointer(glGetAttribLocation(m_program.getProgId(), "position"), 3, GL_FLOAT, GL_FALSE, 0, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_tabIndex[ShapeEInfoTab_INDEX]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(m_index.indexes), m_index.indexes, GL_STATIC_DRAW); glDisable(GL_VERTEX_ARRAY);
Malheureusement, ça n'affiche rien. Voilà le shader utilisé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 glBindVertexArray(m_vao); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_tabIndex[ShapeEInfoTab_INDEX]); glDrawElements(GL_TRIANGLES, m_index.size, GL_UNSIGNED_BYTE, 0);
et
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 #version 130 //Vertex in vec3 position; //Transformation uniform mat4 modelMat; uniform mat4 viewProjMat; out vec4 fColor0; void main(void) { //Position mat4 modelViewProjMat = modelMat * viewProjMat; gl_Position = modelViewProjMat * vec4(position, 1.0f); fColor0 = gl_Position; }
Dans gDebugger, mes matrices sont bonnes, les coordonnées des points et les indices aussi.. Mais ça ne dessine rien..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #version 130 #define PI 3.14159265 in vec4 fColor0; out vec4 fragColor; void main(void) { fragColor = fColor0; }
Merci d'avance.
Partager