IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Petit probleme de texture


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Petit probleme de texture
    Bonjour, je me suis lancé dans un générateur de terrain à partir de heightmap, pour l'instant je n'ai fais que de triangulariser une surface rectangulaire. Mais je me heurte a un petit probleme.
    J'ai donc mon maillage qui est ok, et j'ai essayé de lui appliquer une tesxture. Les textures sont chargée grace à devil/ilut. La texture se charge correctement. Donc lorsque que je charge la texture dans la fonction d'affichage du maillage, tout est ok, ma surface est bel et bien texturée, par contre, si je me contente de binder la texture, là, elle ne s'affiche plus.

    Voivi le code qui affiche le maillage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     void Terrain::draw()
    {
        glEnable(GL_TEXTURE_2D);
        texture.Select();
        for(int i=0;i<nb_Faces;i++)
        {
            glBegin(GL_TRIANGLES);    
                glTexCoord2f(1,1);glVertex3f(pVertices[pFaces[i][1]][X],pVertices[pFaces[i][1]][Y],pVertices[pFaces[i][1]][Z]);
                glTexCoord2f(0,1);glVertex3f(pVertices[pFaces[i][2]][X],pVertices[pFaces[i][2]][Y],pVertices[pFaces[i][2]][Z]);
                glTexCoord2f(1,0);glVertex3f(pVertices[pFaces[i][3]][X],pVertices[pFaces[i][3]][Y],pVertices[pFaces[i][3]][Z]);
            glEnd();    
        }
    }
    celui qui load la texture:

    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
     
    void Texture::Load(char *FileName)
    {
        ilInit();                        //initialise devil
        iluInit();                        //initalise ilu
        ilutRenderer(ILUT_OPENGL);        //initialise ilut
     
        TextureId=ilutGLLoadImage(FileName);    //charge l'image ds la texture
        pTexels=ilGetData();                    //recupere les texels
     
        Width=ilGetInteger(IL_IMAGE_WIDTH);        //recupere width
        Height=ilGetInteger(IL_IMAGE_HEIGHT);    //recupere height
        Bpp=ilGetInteger(IL_IMAGE_BPP);            //recupere le nbr d'octets par pixel
        Format=ilGetInteger(IL_IMAGE_FORMAT);    //recupere le format
     
    }
    et celui quui bind la texture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     void Texture::Select()
    {
        glBindTexture(GL_TEXTURE_2D,TextureId);
    }
    et pour creer le terrain:

    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
     void Terrain::create(unsigned int w,unsigned int h,const float &sz)
    {
        init(4,2);
        pVertices[0](0,0,0);
        pVertices[1](w,0,0);
        pVertices[2](0,h,0);
        pVertices[3](w,h,0);
     
        pFaces[0](0,1,2);
        pFaces[1](3,2,1);
        subdivide(sz,pFaces[1]);
        subdivide(sz,pFaces[0]);
        texture.Load("rock105.jpg");
     
    }
    Donc comme ça, ça ne fonctionne pas, par contre si je mets la ligne
    :texture.load("rock105.jpg"); dans Texture:rax() et non là ça marche, mais la texture est rechargée à chaque affichage

    si quelqu'un aurait une idée de l'endroit où se situe le probleme, je suis preneur
    merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    pour info, il n'y a aucune erreur OpenGL de détecter dans la fonction de sélection
    void Texture::Select()

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par patatose
    pour info, il n'y a aucune erreur OpenGL de détecter dans la fonction de sélection
    void Texture::Select()
    Es-tu sûr que le chargement de l'image se fait bien après la création et l'initialisation du contexte OpenGL. C'est une erreur classique et ce que tu obtiens en ce moment est le résultat classique de cette erreur...

    Jc

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo