Bonjours tous le monde, je vous explique mon problème, afin de gagner en fps je suis passé des display lists aux VBO. Elle marche correctement à l'exception de mais normales!
Quand je créer mes list elle ressemblé à sa :
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
 
glNewList(ListAffichage, GL_COMPILE);
		glBegin(GL_TRIANGLES);
			glColor3f (0.3,0.1,0.2);
			int j=0;
			for (int i=0;i<plan_nbFace;i++)
			{ 
				glNormal3fv(plan_normals[j++]); 
				glVertex3fv(plan_vertex[plan_indice[i][0]]);
				glNormal3fv(plan_normals[j++]);
				glVertex3fv(plan_vertex[plan_indice[i][1]]);
				glNormal3fv(plan_normals[j++]); 
				glVertex3fv(plan_vertex[plan_indice[i][2]]);
			}
		glEnd();
	glEndList();
Alors maintenant je génère mes list comme ceci :
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
 
//Création VBO
glGenBuffers( 1, &TestBuffers);
 
	//Vertex buffer object
	glBindBuffer(GL_ARRAY_BUFFER, TestBuffers);
	glBufferData(GL_ARRAY_BUFFER, (3*sizeof(GLfloat)*13074)+
3*sizeof(GLfloat)*73572), NULL, GL_STATIC_DRAW);//13074 correspond à la taille de mon tableau de vertex plan_[13074][3] de meme 73572 à la taille du tableau de normale normal[73572][3 ]
	glBufferSubData(GL_ARRAY_BUFFER, 0, 3* sizeof(GLfloat)*13074, plan_vertex);   
    glBufferSubData(GL_ARRAY_BUFFER, 3* sizeof(GLfloat)*13074, 3*sizeof(GLfloat)*73572, plan_normals);
 
 
	glGenBuffers(1, &buf_indice);
 
    //Index Buffer Object
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buf_indice);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLint)*3*plan_nbFace, plan_indice, GL_STATIC_DRAW);
    glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, sizeof(GLint)*3*plan_nbFace, plan_indice);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
 
...
 
//Affichage VBO
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_NORMAL_ARRAY);
 
	glBindBuffer(GL_ARRAY_BUFFER, TestBuffers);
    glVertexPointer(3, GL_FLOAT, 0,BUFFER_OFFSET(0));
	glNormalPointer(GL_FLOAT, 0, BUFFER_OFFSET(3*sizeof(GLfloat)*13074));
 
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buf_indice);
	glDrawElements(GL_TRIANGLES, (plan_nbFace*3), GL_UNSIGNED_INT, BUFFER_OFFSET(0));
 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
 
    /* desactivation des tableaux de sommet */
	glDisableClientState(GL_NORMAL_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);
Voila le tout fonctionne correctement excepté mais normales
Si quelqu'un à une petite idée...
Merci !