Texturer une sphere

Signaler
Messages postés
5
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
29 avril 2006
-
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010
-
Bonjour !!
je suis debutant en openGL et j'essaie de mettre une texture sur une sphere que j'ai dessiné avec le code ci-dessous . J'aimerais que vous m'expliquiez  le bout de code qui me permetrais de texturer la sphere . Merci d'avance

void Shape::draw_sphere()
{
    float a,b,r,y,r2,y2;
    int n=50;
     // glColor3f( 1.0f, 1.0f, 6.0f);
   // glScalef(10.0,-90.0,-10.0);
    glBegin(GL_TRIANGLE_FAN);
    //glBegin(GL_POINTS);
    for(a=-M_PI/2;a<=M_PI/2;a+=M_PI/n)
        for(b=0;b<=2*M_PI;b+=2*M_PI/n){
                r=cos(a);
                y=sin(a);
                glVertex3f(r*cos(b),r*sin(b),y); //ne pas mettre le 2ème vertex
                r2=cos(a+M_PI/n);                //pr avoir un nuage de points
                y2=sin(a+M_PI/n);
                glVertex3f(r2*cos(b),r2*sin(b),y2);
          
        }
    glEnd();
}    
A voir également:

4 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bas ca dépend de ta texture. Sous quel forme se présente elle ?

Sinon, il me semble que ya un truc pour calculer les coordonnées de
textures automatiquement pour une sphère. Mais j'ai pas le bouquin sous
la main.


Si ta texture est carré ou rectangulaire. Je pense avoir une solution.

Tu ne considères que les parallèles de ta sphère. Ca te fait donc une
liste de cercle les uns sur les autres mais de périmètre différent.

L'équateur de ton cercle sera la ligne au milieu de ta texture carré.
Donc connaitre les coordonnées de texture des points de l'équation,
c'est évident. Une histoire de longueur de la texture divisé le
périmètre.

Mais tu fais ca pour tous les cercles parallèles. Tu as compris ?
Messages postés
5
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
29 avril 2006

En fait , je suis coincé pr les coordonnées textures , je ne sais pas si il faut utiliser les trucs du genre

glBindTexture(GL_TEXTURE_2D,...);
glTexCoord2f(...) ;

Et par rapport aux explication , j'ai justement construit ma sphère en  le modélisant comme des cercles successifs  , mais ma texture est justement  un carré et je ne sais pas comment faire en sorte qu'elle recouvre entièrement  la sphère  avec les coordonnées textures .
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Tu utilises glBindTexture pour changer de texture.

glTexCoord2f sert a définir les coordonnées de texture des prochains vertex.

Donc toi, il faudra que tu appel glTexCoord2f entre chaque vertex.
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

La librairie GLU propose des fonctions pour dessiner une sphère:
gluNewQuadric( );
gluSphere(...);

Et pour ajouter des textures:
glBindTexture(...);
gluQuadricTexture(...);