Texturer une sphere

aymardhb9 Messages postés 5 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 29 avril 2006 - 28 avril 2006 à 18:23
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010 - 29 avril 2006 à 13:16
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();
}    

4 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 00:41
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 ?
aymardhb9 Messages postés 5 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 29 avril 2006
29 avril 2006 à 04:09
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 .
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 12:05
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.
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
29 avril 2006 à 13:16
La librairie GLU propose des fonctions pour dessiner une sphère:
gluNewQuadric( );
gluSphere(...);

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