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 :

Problème transparence texture (OpenGL + Qt)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut Problème transparence texture (OpenGL + Qt)
    Bonjour,

    Dans mon programme, j'ai une texture qui me sert de fond (sans couche alpha) et par dessus cette texture, je dois afficher une texture plus petite avec une transparence (et qui a une couche alpha bien sur).

    Je charge ma petite texture de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QPixmap pixmap(nomFichier);
    Texture2 = bindTexture(pixmap, GL_TEXTURE_2D, GL_RGBA);
    et j'utilise pour afficher le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            qglClearColor(Qt::white);
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
            glEnable(GL_BLEND);
            glEnable(GL_TEXTURE_2D);
            glBindTexture(GL_TEXTURE_2D, Texture2);
            glBegin(GL_QUADS);
            glTexCoord2d(0,0);		glVertex3f(-50,-50, -1.0);
            glTexCoord2d(1,0);		glVertex3f( 50,-50, -1.0);
            glTexCoord2d(1,1);		glVertex3f( 50, 50, -1.0);
            glTexCoord2d(0,1);		glVertex3f(-50, 50, -1.0);
            glEnd();
            glDisable(GL_TEXTURE_2D);
            glDisable(GL_BLEND);
    Et au final, j'ai ma texture au fond correcte et par dessus je vois bien ma petite texture mais avec du blanc à la place de la transparence. Auriez-vous une idée d'où pourrez se situer mon erreur.
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut
    Petit truc bizarre (du moins selon moi)

    si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glBlendFunc(GL_SRC_ALPHA, GL_ONE) ;
    Mon dessin devient transparent et le fond qui devrait être transparent reste blanc

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut
    Petit up pour savoir quelqu'un a une idée avec quelques informations supplémentaires :

    Dans mon code d'affichage de la petite texture, si je mets une couleur, le fond de ma petite texture sera de cette couleur, mais si je mets que le fond est transparent, ma texture n'est plus affiché. Voici le code pour que ce soit plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            qglClearColor(Qt::white);
            qglColor(Qt::white); // et si je mets qglColor(Qt::transparent); plus rien d'apparait
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
            glEnable(GL_BLEND);
            glEnable(GL_TEXTURE_2D);
            glBindTexture(GL_TEXTURE_2D, Texture2);
            glBegin(GL_QUADS);
            glTexCoord2d(0,0);		glVertex3f(-50,-50, -1.0);
            glTexCoord2d(1,0);		glVertex3f( 50,-50, -1.0);
            glTexCoord2d(1,1);		glVertex3f( 50, 50, -1.0);
            glTexCoord2d(0,1);		glVertex3f(-50, 50, -1.0);
            glEnd();
            glDisable(GL_TEXTURE_2D);
            glDisable(GL_BLEND);

Discussions similaires

  1. Problème transparence Texture
    Par bchandroid dans le forum OpenGL
    Réponses: 6
    Dernier message: 13/07/2010, 22h46
  2. Réponses: 3
    Dernier message: 29/07/2009, 14h32
  3. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  4. [libjpeg && opengl] problème "multi-texturing"
    Par pspflashsystem dans le forum OpenGL
    Réponses: 4
    Dernier message: 23/02/2009, 13h01
  5. Réponses: 15
    Dernier message: 29/03/2008, 15h08

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