Hello to all the community
I have a problem with VBO.
I have a table with all the vertex (x, y, z), texture (tx, tz), and normal (nx, ny, nz).
And another picture index.
Normally the two tables have the correct values.
But nothing appears.
Here is my code, thank you for helping me, I’m really block:
if (vbo.ContainsKey(mesh.material))
{
// Utilisation des données des buffers
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, vbo[mesh.material][0]);
Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, 0);
Gl.glTexCoordPointer(2, Gl.GL_FLOAT, 0, 3);
Gl.glNormalPointer(Gl.GL_FLOAT, 0, 5);
Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, vbo[mesh.material][1]);
// Activation d'utilisation des tableaux
Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
Gl.glEnableClientState(Gl.GL_NORMAL_ARRAY);
// Rendu de notre géométrie
Gl.glDrawElements(Gl.GL_TRIANGLES, mesh.IndexArray.Length, Gl.GL_UNSIGNED_INT, 0);
Gl.glDisableClientState(Gl.GL_NORMAL_ARRAY);
Gl.glDisableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
}
else
{
uint[] tableau = new uint[2];
// Génération des buffers
Gl.glGenBuffers(2, tableau);
// Buffer d'informations de vertex
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, tableau[0]);
Gl.glBufferData(Gl.GL_ARRAY_BUFFER, (IntPtr)mesh.FloatArray.Length, mesh.FloatArray, Gl.GL_STATIC_DRAW);
// Buffer d'indices
Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, tableau[1]);
Gl.glBufferData(Gl.GL_ELEMENT_ARRAY_BUFFER, (IntPtr)(mesh.IndexArray.Length), mesh.IndexArray, Gl.GL_STATIC_DRAW);
vbo.Add(mesh.material, tableau);
// Utilisation des données des buffers
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, vbo[mesh.material][0]);
Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, 0);
Gl.glTexCoordPointer(2, Gl.GL_FLOAT, 0, 3);
Gl.glNormalPointer(Gl.GL_FLOAT, 0, 5);
Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, vbo[mesh.material][1]);
// Activation d'utilisation des tableaux
Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
Gl.glEnableClientState(Gl.GL_NORMAL_ARRAY);
// Rendu de notre géométrie
Gl.glDrawElements(Gl.GL_TRIANGLES, mesh.IndexArray.Length, Gl.GL_UNSIGNED_INT, 0);
Gl.glDisableClientState(Gl.GL_NORMAL_ARRAY);
Gl.glDisableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
}