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 :

placage de texture demandant une déformation non homothétique de la texture


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut placage de texture demandant une déformation non homothétique de la texture
    Bonjour,

    jai un pb, jai un rectangle 2D et je met une texture dessus --> ca aucun pb et voila ce que ca donne :


    par contre lorsque jutilise un quadrilatère quelconque voila le resultat
    (jai juste modifier mon rectangle en lui mettant le coté gauche plus grand)

    On peut voir une sorte de pliage, en gros la texture est pas correctement mise (il traite les deux triangles composant le quadrilatere, séparément jai limpession)

    et voila mon code : (jai juste collé le code interieur aux méthodes)

    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
     ***********************
      image.load("grille.png") ;
      image = QGLWidget::convertToGLFormat(image) ;
    ************************************
      glGenTextures( 1, &texture_name ); 
      glBindTexture( GL_TEXTURE_2D, texture_name); 
      glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); 
      glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
      glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, image.width(),
    image.height(), 0,GL_RGBA, GL_UNSIGNED_BYTE, image.bits()); 
     
    ********************************************
     glClear(GL_COLOR_BUFFER_BIT); //clear color and deph buffer
        glEnable (GL_TEXTURE_2D); //allow texture
        glBindTexture (GL_TEXTURE_2D, texture_name); 
        glBegin(GL_QUADS);
          //each vertex object is associated to a vertex texture
          glTexCoord2f(0.0, 0.0); glVertex2f(-0.5, -0.7);
          glTexCoord2f(0.0, 1.0); glVertex2f(-0.5, 0.5);
          glTexCoord2f(1.0, 1.0); glVertex2f(0.5, 0.5);
          glTexCoord2f(1.0, 0.0); glVertex2f(0.5, -0.5);
        glEnd();
    ****************************
    Donc est ce que qqn à la solution pour bien mettre la texture sur un quadrilatere quelcquonque 2D ?

    Merci

  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 : 41
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    c'est pas très clair comme problème...
    une image peut être ?
    * 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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut
    done

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Effectivement la carte traite les triangles séparément.

    Je ne pense pas qu'il y ait de solution miracle pour ce que tu veux faire. Au pire, si le but n'est que d'afficher un seul quadrilatère, tu peux le subdiviser en plein de triangles pour atténuer l'effet de distorsion.

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 582
    Par défaut
    première chose à vérifier, est-ce que glHint est utilisé dans ton programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    si le problème persiste, il faut utiliser glTexCoord4f pour pouvoir jouer avec la valeur q
    tu peux aller voir ce topic sur gamedev (en anglais) où le gars à le même problème que toi et la réponse explique bien l'origine et la solution
    http://www.gamedev.net/community/for...opic_id=419296
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Par défaut
    merci pour les renseignements jusquici fournit

    jai retenu quil faut utiliser glTexCoord4f(s/w, t/w, 0, 1/w) au lieu de glTexCoord2f(s, t) mais que le w ne peut se calculer quà partir dun modele totalement connu de la scène, cest à dire en utilisant aucune configuration par défault et ainsi connaitre tous les paramètres.

    Si qqn pouvait fournir un tel exemple de code, en précisant le calcul de w ?

    merci

Discussions similaires

  1. Lancement d'une fonction non demandée au chargement du script
    Par Genestoux dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2009, 13h37
  2. Réponses: 2
    Dernier message: 26/03/2009, 15h36
  3. Réponses: 1
    Dernier message: 30/12/2008, 20h58
  4. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13
  5. Réponses: 3
    Dernier message: 25/11/2002, 14h15

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