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 :

peut il y avoir plusieurs textures sur un seul objet ?


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 33
    Points : 19
    Points
    19
    Par défaut peut il y avoir plusieurs textures sur un seul objet ?
    Bonjour,
    pour une implémentation en opengl, peut il y avoir plusieurs textures sur un seul objet ou doit on toujours(?) s'arranger avec l'infographiste pour qu'il découpe le model en sous models qui auront chacun une seule texture ?
    please dites moi si je suis pas clair.

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    il peut tres bien y avoir plusieurs texture par model, ca s'appele du multitexturing...

    par contre il faut utiliser un format de model qui le gere... et ca je m'y connait pas trop...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    Ce que tu veu dire c'est deux textures différentes mais pour des faces différentes d'un objet (par deux textures au même endroit). Si c'est ça ce n'est pas du multitexturing . Il faut juste que tu trouve un format de model qui le permet (j'en connais pas personelement) et ensuite tu peu appeler avec un glBindTexture(...) l'une ou l'autre de la texture selon la partie de l'objet que tu dessine.

    Je t'avoue que moi je separe l'objet en 2 objets avec des textures différentes pour eviter le probléme avec 3D Studio

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Points : 48
    Points
    48
    Par défaut
    de tout facon la plupart des formats font plusieurs objets avec chacun une seule texture ca permet en plus de mettre les objets ds des listes (sous opengl) ce ki est plus rapide ke les glBegin...
    puisque glBindTexture n'est permis ni entre un glbegin..glend ni ds une liste (je crois)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 24
    Points : 31
    Points
    31
    Par défaut
    il faut que tu sois plus clair sur ta definition d'objet, si un objet est une entité que tu charge d'un fichier, il est souvent découpé en "meshs" qui sont des parties de l'objet. chaque mesh peut avoir une texture a lui mais, meme si ca doit etre possible, il est tres compliqué de mettre deux textures differentes sur un meme mesh.

    par exemple souvent un humanoide possede un mesh pour le corp et un pour la tete.

    pour un format de fichier compatible. et ben le 3DS, le MDL (de halflife) ou le MWP (mon format a moi)
    _____________
    (c) Maw-ware

  6. #6
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Salut,


    si tu veux effectivement faire du multi texturing il n est pas obligatoire d avoir deux fois le jeu de coordonnees de texture , tu peux utiliser dans certains cas les memes coordonnees , par exemple dans le cas ou ta deuxieme texture est une texture de detail dans le genre :



    pour faire du multitexturing , soit tu fais deux passage avec des bind differents soit tu utilise l extension glActiveTextureARB

    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
     
    #define GL_TEXTURE0_ARB                     0x84C0
    #define GL_TEXTURE1_ARB                     0x84C1
     
    typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) ( GLenum target, GLfloat s, GLfloat t);
    typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC)   ( GLenum target);
     
       PFNGLMULTITEXCOORD2FARBPROC		glMultiTexCoord2fARB;	
        PFNGLACTIVETEXTUREARBPROC		  glActiveTextureARB;
     
    	glActiveTextureARB		= (PFNGLACTIVETEXTUREARBPROC)		wglGetProcAddress("glActiveTextureARB");
    	glMultiTexCoord2fARB	= (PFNGLMULTITEXCOORD2FARBPROC)		wglGetProcAddress("glMultiTexCoord2fARB");
     
     
     glActiveTextureARB(GL_TEXTURE0_ARB);   // Active les textures ////
    	    glEnable(GL_TEXTURE_2D);
    	    glBindTexture(GL_TEXTURE_2D,text1); 
    	    glActiveTextureARB(GL_TEXTURE1_ARB);
    	    glEnable(GL_TEXTURE_2D);
    	    glBindTexture(GL_TEXTURE_2D,text2);

    je te dis ca vite fait mais si ca te branche y a de nombreuses ressources du le net


    A+

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Hello,

    Si tu as des liens sur le net concernant les extentions arb (surtout multitexture) je suis preneur !!!


    Trident, qui a un joli prog qui fait du bump, mais qui à pas tout tout compris comment on faisais du (A scalaire B)*couleur.

  8. #8
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par Trident
    Hello,
    Trident, qui a un joli prog qui fait du bump, mais qui à pas tout tout compris comment on faisais du (A scalaire B)*couleur.
    va voir sur le site de Nvidia il y a toutes les docs qu'il faut (parfois même trop, on ne sait plus par ou commencer )

    et pour le (A.B)*couleur il faut utiliser soit l'extention ARB DOT3 soit faire toi même un fragment programme qui le fait...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut multi texturing
    Salut à tous...
    C bien évident que ca peut etre pratique d'avoir plusieurs textures sur un seul mesh.
    un ptit tuto : http://www.ultimategameprogramming.com/Tutorial.php?category=OpenGL&page=2

    Par contre, eske kk1 peut me dire quelle fonction utiliser pour pouvoir faire du multi sur un mesh affiché avec des vertex arrays.
    J'ai essayé plusieurs choses,
    glTexCoordPointerListIBM pour indiquer un tableau de tableau de coordonnées de texture ca marche pas sur
    glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)wglGetProcAddress("glTexCoordPointerListIBM");

    et avec glMultiTexCoord2dvARB ca ne semble pas prendre en compte les coordonnées de texture puisque je suis obligé de virer glEnableClientState(GL_TEXTURE_COORD_ARRAY); pr que ca puisse s'afficher sans planter

    merci d'avance
    a+

  10. #10
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Tu peux utiliser jursqu'à 8 textures sur une même facette il me semble.

    Pour ma part, j'avais fait du Lightmap qui utilise deux couche de texture.

    Par contre, il me semble que je ne pouvais plus utiliser les vertex array dans ce cas.
    Il faut utiliser 2 uv différents et ceux-ci ne sont pas pris en compte la structure des vertex array...
    Хајде Јано коло да играмо

  11. #11
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par SuperCed
    Tu peux utiliser jursqu'à 8 textures sur une même facette il me semble.
    ca depend de la carte graphique...

    les GeForce2 avait 2 unitée de texture

    GeForce4 => 4 unitée

    radeon9800 => 8 unitée

    (je ne parle que de celles que je connait mais je croit que les radeon 8500 en avait 6 mais n'avait que 4 unitée de coordonnée de textures...)
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  12. #12
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    je parlais des cartes récentes. Mais OpenGL propose 8 couches par défaut.

    Sinon, de toutes façons, il faut éviter d'en mettre plus de 2, sinon, ça ralenti pas mal...
    Хајде Јано коло да играмо

  13. #13
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    non non, openGL 1.X propose jusqu'a 32 unitée de textures... on a donc encore de la marge avant d'arriver au limites... par contre je ne sait pas combient en propose openGL 2...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  14. #14
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Tu dois certainement avoir raison. J'ai peut être confondu avec le nombre de lumière ou autre chose. Ca fait 1 an et demi que je n'ai plus touché à OpenGL, il faut vraiment que je m'y remette... ;-)
    Хајде Јано коло да играмо

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/11/2010, 16h05
  2. Comment avoir plusieurs pages sur un rapport?
    Par SmileAndFly dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 20/11/2007, 13h52
  3. [Bonne pratique] Plusieur projets sur un seul serveur Subversion
    Par TitiFr dans le forum Subversion
    Réponses: 1
    Dernier message: 31/05/2006, 11h36
  4. Plusieures infos sur une seule ligne avec ou sans tableau
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/03/2006, 14h16
  5. plusieurs pages sur un seul lien
    Par Darkyl dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/02/2006, 11h30

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