Salut,
Vala j'ai un petit problème en opengl (je precise que je sdebute en 3D)
je veut afficher plusieur textures, seulement on ne peut en activer une seule a la fois.
Donc je genere la texture avant l'affichage de chaque objet.
Le seul probleme c'est que quand je tourne autour de l'objet par exemple, ben a chaque rotation, il me regenère les textures et ça rame pas mal.
Donc je cherche une solution plus optimisé.

Merci de votre aide

Voici le code :
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
void displayFunction(void)
{
	glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
 
 
	gluLookAt(0.0, 0.0, eloi, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
 
   /* remplissage de l'ecran avec la couleur de fond */
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 
 
 
      /* on fait tourner le repère local */
      glRotatef((GLfloat)rX, 1.0, 0.0, 0.0);
      glRotatef((GLfloat)rY, 0.0, 1.0, 0.0);
	  tex->Gen_Texture();
 
	  /*On trace les faces du cube*/
	  glBegin(GL_QUADS);  	
		/* on desine des carrées avec la texture*/
		glTexCoord2i(0,0);glVertex3i(-1,-1,-1);
		glTexCoord2i(1,0);glVertex3i(+1,-1,-1);
		glTexCoord2i(1,1);glVertex3i(+1,+1,-1);
		glTexCoord2i(0,1);glVertex3i(-1,+1,-1);
 
 
		glTexCoord2i(0,0);glVertex3i(-1,-1,+1);
		glTexCoord2i(1,0);glVertex3i(+1,-1,+1);
		glTexCoord2i(1,1);glVertex3i(+1,+1,+1);
		glTexCoord2i(0,1);glVertex3i(-1,+1,+1);
 
 
		glTexCoord2i(0,0);glVertex3i(+1,-1,-1);
		glTexCoord2i(1,0);glVertex3i(+1,-1,+1);
		glTexCoord2i(1,1);glVertex3i(+1,+1,+1);
		glTexCoord2i(0,1);glVertex3i(+1,+1,-1);
 
 
		glTexCoord2i(0,0);glVertex3i(-1,-1,-1);
		glTexCoord2i(1,0);glVertex3i(-1,-1,+1);
		glTexCoord2i(1,1);glVertex3i(-1,+1,+1);
		glTexCoord2i(0,1);glVertex3i(-1,+1,-1);
 
 
		glTexCoord2i(1,0);glVertex3i(-1,+1,-1);
		glTexCoord2i(1,1);glVertex3i(+1,+1,-1);
		glTexCoord2i(0,1);glVertex3i(+1,+1,+1);
		glTexCoord2i(0,0);glVertex3i(-1,+1,+1);
 
 
		glTexCoord2i(1,0);glVertex3i(-1,-1,+1);
		glTexCoord2i(1,1);glVertex3i(+1,-1,+1);
		glTexCoord2i(0,1);glVertex3i(+1,-1,-1);
		glTexCoord2i(0,0);glVertex3i(-1,-1,-1);
 
		/*dessin du sol*/
		glTexCoord2i(1,0);glVertex3i(-15,-3,+15);
		glTexCoord2i(1,1);glVertex3i(+15,-3,+15);
		glTexCoord2i(0,1);glVertex3i(+15,-3,-15);
		glTexCoord2i(0,0);glVertex3i(-15,-3,-15);
 
	  glEnd();
	  /* couleur dela sphere*/
      glColor3f (0.0, 0.0, 0.7);
	  glutSolidSphere(20.0, 50, 50);
	  /* couleur des objets: blanc */
      glColor3f (1.0, 1.0, 1.0);
	  texciel->Gen_Texture();
	  gluSphere(qobj,15,50,50);
	  gluQuadricTexture(qobj,1);
 
   /* inversion des buffers */
   glutSwapBuffers();	
}