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 de textureet superposition


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Problème de textureet superposition
    Bonjour,

    tout d'abord je suis débutant en OpenGL. Je chercher à créer une texture et un carré en dessus de celle-ci pour la faire resortir (car le fond est noir).

    J'ai donc créé ce bout de 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
    25
    26
    27
     
     glEnable(GL_TEXTURE_2D);
                glBindTexture(GL_TEXTURE_2D, textures[j]->first);
                glBegin(GL_QUADS);
     
                glTexCoord2f(0.0f, 0.0f);
                glVertex3f(mp->v3WorldPositions[0].x,mp->v3WorldPositions[0].y,  mp->v3WorldPositions[0].z);
                glTexCoord2f(1.0f, 0.0f);
                glVertex3f(mp->v3WorldPositions[1].x,mp->v3WorldPositions[1].y,  mp->v3WorldPositions[1].z);
                glTexCoord2f(1.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[2].x,mp->v3WorldPositions[2].y,  mp->v3WorldPositions[2].z);
                glTexCoord2f(0.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[3].x,mp->v3WorldPositions[3].y,  mp->v3WorldPositions[3].z);
                glEnd();
                glDisable (GL_TEXTURE_2D);
     
                double alpha = 0.01;
                glColor3f(1,1,0);
                glBegin(GL_QUADS);
                glVertex3f(mp->v3WorldPositions[0].x-alpha,mp->v3WorldPositions[0].y-alpha,  mp->v3WorldPositions[0].z-0.1);
                glTexCoord2f(1.0f, 0.0f);
                glVertex3f(mp->v3WorldPositions[1].x+alpha,mp->v3WorldPositions[1].y-alpha,  mp->v3WorldPositions[1].z-0.1);
                glTexCoord2f(1.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[2].x+alpha,mp->v3WorldPositions[2].y+alpha,  mp->v3WorldPositions[2].z-0.1);
                glTexCoord2f(0.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[3].x-alpha,mp->v3WorldPositions[3].y+alpha,  mp->v3WorldPositions[3].z-0.1);
                glEnd();
    Je crée donc d'abord ma texture et ensuite le carré d'une certaine couleur. Je ne sais pas pourquoi comme vous pouvez le voir dans la photo la texture est coupé par le carré de couleur (quand la texture est au dessus de lui).

    Je ne sais pas pourquoi ca fait ca...



    La vue est une vue de coté, on voit la texture au dessus et le carré en dessous.

    Si quelqu'un peut me débloquer sur ce problème.

    D'avance merci.
    Images attachées Images attachées  

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 036
    Billets dans le blog
    12
    Par défaut
    As-tu activé le depth test ? (glEnable( GL_DEPTH_TEST ))
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    As-tu activé le depth test ? (glEnable( GL_DEPTH_TEST ))
    Bonjour, désolé pour la réponse tardive.

    Je n'avais pas mis cette ligne, je l'ai rajouté mais visiblement pas de changement.

    J'ai inversé les deux opérations, c'est a dire, je mets d'abord la texture et ensuite le carré de couleur en dessous. Maintenant c'est l'inserve qui se produit, on voit toujours la texture est le carré de couleur est caché voici le 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
    25
    26
    27
    28
    29
    30
    31
    double alpha = 0.01;
                glColor3f(1,0,0);
                glBegin(GL_QUADS);
                glVertex3f(mp->v3WorldPositions[0].x-alpha,mp->v3WorldPositions[0].y-alpha,  mp->v3WorldPositions[0].z);
                glTexCoord2f(1.0f, 0.0f);
                glVertex3f(mp->v3WorldPositions[1].x+alpha,mp->v3WorldPositions[1].y-alpha,  mp->v3WorldPositions[1].z);
                glTexCoord2f(1.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[2].x+alpha,mp->v3WorldPositions[2].y+alpha,  mp->v3WorldPositions[2].z);
                glTexCoord2f(0.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[3].x-alpha,mp->v3WorldPositions[3].y+alpha,  mp->v3WorldPositions[3].z);
                glEnd();
     
     
    //            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
                 glColor3f(1,1,1);
                glEnable(GL_TEXTURE_2D);
                glEnable(GL_DEPTH_TEST);
                glBindTexture(GL_TEXTURE_2D, textures[j]->first);
                glBegin(GL_QUADS);
     
                glTexCoord2f(0.0f, 0.0f);
                glVertex3f(mp->v3WorldPositions[0].x,mp->v3WorldPositions[0].y,  mp->v3WorldPositions[0].z);
                glTexCoord2f(1.0f, 0.0f);
                glVertex3f(mp->v3WorldPositions[1].x,mp->v3WorldPositions[1].y,  mp->v3WorldPositions[1].z);
                glTexCoord2f(1.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[2].x,mp->v3WorldPositions[2].y,  mp->v3WorldPositions[2].z);
                glTexCoord2f(0.0f, 1.0f);
                glVertex3f(mp->v3WorldPositions[3].x,mp->v3WorldPositions[3].y,  mp->v3WorldPositions[3].z);
                glEnd();
                glDisable (GL_TEXTURE_2D);

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 173
    Billets dans le blog
    155
    Par défaut
    Moi, j'aurais mis le glEnable() avant tout le rendu
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 036
    Billets dans le blog
    12
    Par défaut
    le depth test est un état qui doit être activé soit :
    - à l'initialisation du contexte OpenGL s'il n'est pas censé évoluer;
    - au début de la boucle de rendu s'il ne doit pas évoluer durant le rendu ;
    Ca peut être plus complexe mais je n'ai pas l'impression que ce soit ton cas.
    Donc le fait de l'activer en plein milieu de la boucle de rendu n'aura probablement l'effet escompté.
    Je te conseille donc de le mettre au début de ta fonction de rendu.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/10/2012, 19h35
  2. Problème lors de superposition d'item
    Par LaurentB17 dans le forum Forms
    Réponses: 2
    Dernier message: 15/01/2010, 12h21
  3. problème de superposition de calques
    Par crescendo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/05/2006, 18h27
  4. [HTML/Object] Problème superposition calques (tag <object
    Par busmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/11/2005, 12h02
  5. Problème de superposition de fenetre
    Par Raton dans le forum MFC
    Réponses: 14
    Dernier message: 28/07/2005, 21h57

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