Bonjour!

Je suis en train de batailler à plaquer une texture sur une sphere, (mon code est fourni ci dessus) Je sais pas trop quoi mettre dans mes glTexCoord2f (voir code) (j'ai essayé la formule pour l'UV mapping, pour transformer des coordonnées 3d en 2D avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
x/sqrt(x²+y²+z²),y/sqrt(x²+y²+z²)
, mais ca donne rien de bon.

PS: je veux pas utiliser ni gluSphere, ni glutSolidSphere

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
    int i, j;
    double r=3;
    int lats=20;
    int longs=20;
    glBindTexture(GL_TEXTURE_2D, texNames[0]);
    glEnable(GL_TEXTURE_2D);
    for(i = 0; i <= lats; i++) {
      double lat0 = M_PI * (-0.5 + (double) (i - 1) / lats);
      double z0  = sin(lat0);
      double zr0 =  cos(lat0);
 
      double lat1 = M_PI * (-0.5 + (double) i / lats);
      double z1 = sin(lat1);
      double zr1 = cos(lat1);
 
      glBegin(GL_QUAD_STRIP);
      for(j = 0; j <= longs; j++) {
	double lng = 2 * M_PI * (double) (j - 1) / longs;
	double x = cos(lng);
	double y = sin(lng);
 
	glNormal3f(x * zr0, y * zr0, z0);
	glTexCoord2f( ? , ? );
	glVertex3f(x * zr0, y * zr0, z0);
 
       glNormal3f(x * zr1, y * zr1, z1);
       glTexCoord2f( ? , ? );
	glVertex3f(x * zr1, y * zr1, z1);
      }
      glEnd();
    }
 
    glDisable(GL_TEXTURE_2D);