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 :

pb de coord de tex dans tableau avec multitex


Sujet :

OpenGL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 118
    Points : 118
    Points
    118
    Par défaut pb de coord de tex dans tableau avec multitex
    Bijour,

    Alors j'ai un problème avec ce code: aurais-je oublier quelques chose.
    Si je dessine une unité toutes seul avec son tableau de coordonnée associé, le dessin ce fait bien comme je veut mais lorsque j'utilise le multi-texturing, il n'y a que le premier tableau de coord de texture qui est prit en compte pour les 2 texture.

    Je précise encor un fois ce n'est pas un problème de calcul mais plutot un oublie d'une commande OpenGL.(g pas mon livre sur moi alors la je suis un peu bloqué.

    Si vous avez des question....

    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
     
       glEnableClientState(GL_VERTEX_ARRAY);
       glVertexPointer(3,GL_FLOAT,sizeof(ModelVertex),model->getVertex()->vertex.getCoord());
     
     
       glClientActiveTextureARB(GL_TEXTURE0);
       glEnable(GL_TEXTURE_2D);
       glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
       glBindTexture(GL_TEXTURE_2D,this->getTexToonDiffuseID());
       glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       glTexCoordPointer(1,GL_FLOAT,0,diffuseToonTexCoord);
     
       glClientActiveTextureARB(GL_TEXTURE1);
       glEnable(GL_TEXTURE_2D);
       glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
       glBindTexture(GL_TEXTURE_2D,model->getTexture()->getId());
       glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       glTexCoordPointer(2,GL_FLOAT,sizeof(ModelVertex),&model->getVertex()->texCoord);
     
       glEnable(GL_CULL_FACE);
       glCullFace(GL_BACK);                              //cull des faces arrière
     
       //*** affichage model
       glDrawArrays(GL_TRIANGLES,0,model->getVertexNumber());

    Si vous avez des question....
    JC est bien notre dieu...(non non pas jesus christ mais John Carmack!!!)

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 118
    Points : 118
    Points
    118
    Par défaut
    excusez moi,

    En fait, je voudrait que chaque tableau de texture soit prit pour chaque unité de texture... j'ai du oublier une commande OpenGL....
    JC est bien notre dieu...(non non pas jesus christ mais John Carmack!!!)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 118
    Points : 118
    Points
    118
    Par défaut
    Bon en fait j'en ai résolu une partie grace a nutty. ( <je ne met pas l'addresse car je me suis fait modéré déjà une fois> site anglais)

    Déja il ne fallait pas que j'utilise GL_TEXTURE0 mais GL_TEXTURE0_ARB car j'utilise les ARB.

    Maintenant, mes coord pour l'unité 0 sont bien prit en compte (et seulement pour elle) mais l'unité 1 n'en a plus

    Voilà.... d'autre idée....

    PS :
    J'ai fait 3 code path : une pour OpenGLde base, une pour OpenGL avec multitexturing et une dernière pour OpenGL avec multitexuring et vertex_program(ARB et bientot NV qui est plus rapidepour carte nVidia).

    Seul la 2ème ne marche pas
    JC est bien notre dieu...(non non pas jesus christ mais John Carmack!!!)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 118
    Points : 118
    Points
    118
    Par défaut
    J'ai résolu le problème . Ya pas grand monde qui m'a aidé sur ce coup la.

    Tout le secret résidait dans les fonctions glClientActiveTextureARB et glActiveTextureARB .

    En fait j'ai lus mon livre ce week-end vu que je suis rentré chez moi et j'ai tout comrit :

    glClientActiveTextureARB sert pour spécifier uniquement les coordonnées de texture par unité de texture et glActiveTextureARB sert pour spécifer les attribut de texture par unité de texture.

    Voici le code final qui marche :

    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
     
     
    	glEnableClientState(GL_VERTEX_ARRAY);
    	glVertexPointer(3,GL_FLOAT,sizeof(ModelVertex),model->getVertex()->vertex.getCoord());
     
     
    	glActiveTextureARB(GL_TEXTURE1_ARB);
    	glEnable(GL_TEXTURE_2D);
    	glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
    	glBindTexture(GL_TEXTURE_2D,model->getTexture()->getId());
     
    	glActiveTextureARB(GL_TEXTURE0_ARB);
    	glEnable(GL_TEXTURE_2D);
    	glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
    	glBindTexture(GL_TEXTURE_2D,this->getTexToonDiffuseID());
     
    	glClientActiveTextureARB(GL_TEXTURE1_ARB);
    	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    	glTexCoordPointer(2,GL_FLOAT,sizeof(ModelVertex),model->getVertex()->texCoord);
     
    	glClientActiveTextureARB(GL_TEXTURE0_ARB);
    	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    	glTexCoordPointer(1,GL_FLOAT,0,diffuseToonTexCoord);
     
     
    	glEnable(GL_CULL_FACE);
    	glCullFace(GL_BACK);										//cull des faces arrière
     
    	//*** affichage model
    	glDrawArrays(GL_TRIANGLES,0,model->getVertexNumber());
    JC est bien notre dieu...(non non pas jesus christ mais John Carmack!!!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Formule dans tableau avec douchette RECHECHEH et second temps validation
    Par G4 83000 dans le forum Excel
    Réponses: 1
    Dernier message: 08/12/2014, 21h36
  2. Fonction de recherche dans tableau avec key
    Par blueace dans le forum Langage
    Réponses: 6
    Dernier message: 24/01/2014, 17h42
  3. Modifications dans tableau avec 2 foreach sans effet
    Par EIN-LESER dans le forum Langage
    Réponses: 3
    Dernier message: 23/10/2013, 15h12
  4. [Vxi3] Nombre de résultats dans tableau avec filtre
    Par Elsa1 dans le forum Webi
    Réponses: 13
    Dernier message: 22/12/2011, 14h25
  5. [MySQL] problème d'affichage dans tableau avec bdd Mysql
    Par sinifer dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/05/2009, 09h50

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