Bonjour à tous,

Voici mon petit problème, OpenGL étant peu bavard, je n'arrive pas déterminer ou se trouve mon erreur.

Donc j'ai principalement deux géométries VBO à afficher, la première est un terrain composé d'un buffer pour les vertices (GL_ARRAY_BUFFER) et de plusieurs autres buffer (GL_ELEMENT_ARRAY_BUFFER) pour dessiner en GL_QUAD_STRIP.

Et une deuxième geométrie, avec un buffer pour les vertices et un autre pour les indices de constructions (ici en GL_TRIANGLES).

Quand je demande a OpenGL de dessiner avec glDrawElements() séparement les géométries, tout roule. Mais si je lui demande de dessiner, le terrain avec l'objet sur un même rendu, on dirait qu'il mixe les VBO...

Pourtant, je bind à chaque fois les différents buffers nécessaires, celui des points et celui des indices, avant d'appeler glDrawElements(). Mais rien y fait.

Voici la procédure de rendu pour chacune des géometries :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
	glEnableVertexAttribArray(NV_VERTEX_ID);
	glEnableVertexAttribArray(NV_NORMAL_ID);
	glEnableVertexAttribArray(NV_COLOR_ID);
 
	glBindBuffer(GL_ARRAY_BUFFER, geo->ID[0]);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geo->ID[1]);
 
	glDrawElements(GL_TRIANGLES, geo->indicesCount, GL_UNSIGNED_INT, NULL);
 
	glDisableVertexAttribArray(NV_VERTEX_ID);
	glDisableVertexAttribArray(NV_NORMAL_ID);
	glDisableVertexAttribArray(NV_COLOR_ID);
Est-ce que j'ai oublié quelque chose ?

Note : pour le terrain, j'ai juste une boucle autour de glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, xxx) et glDrawElements() en plus.
Note 2 : c'est en C sous Linux

Merci d'avance.