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 :

Dessiner une ligne dans un cube transparent ?


Sujet :

OpenGL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut Dessiner une ligne dans un cube transparent ?
    Bonjour a tous, j'ai un cube transparent et j'aimerai dessiner les aretes de ce cubes avec des lignes particulieres selon l'arete (plusieurs sortes de pointillés).
    Bref mon probleme est simple, je n'arrive pas à dessiner une ligne à l'interieur du cube.
    Le cube utilise un blending pour la transparence.
    Voici le code pour la creation d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define uneLigneVert(x,y,z,lg) glBegin(GL_LINES); \
    	glVertex3f ((x),(y),(z)); glVertex3f ((x),((y)+(lg)),(z)); glEnd();
    Et voici l'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	glEnable(GL_LINE_STIPPLE);
    	glLineStipple (1, 0x1C47);
    	static float la = boundingBoxPlaneBase.getDemiLargeur();
    	static float lo = boundingBoxPlaneBase.getDemiLongueur();
    	uneLigneVert(lo, la, la, -la*2.0);
    	glDisable(GL_LINE_STIPPLE);
    Bref, lorsque ma ligne est hors du cube, elle s'affiche bien. Lorsqu'elle est dedans, elle ne s'affiche pas, comme on le voit sur le dessin ci dessous a droite, avec la ligne pleine verticale dont un petit bout depasse en haut et un plus gros bout depasse en bas.



    Une idee ? C'est pas une question de normale sur mes lignes, a coté des glVertex quand meme ?

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    A mon avis tu ne desactives pas l'ecriture dans le z-buffer qd tu dessines ton carré. C'est le probleme des objets transparents, il faut desactiver ça, et ensuite s'amuser à les trier dans le bon ordre (du plus eloigné au plus proche) pour les dessiner dans cet ordre.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Mais si c'était le probleme, si je dessinais une sphere à l'intérieur de ce cube transparent, je la verais pas non plus à cause du Z buffer non ?

    PS : je dessine la ligne et la sphere apres le dessin du cube. La sphère s'affiche, et pas la ligne.

    ccl : je comprend pas.

    Merci.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Bon j'ai essayé quand meme de desactivé le depth buffer lors du tracé du cube transparent, et ca marche !!

    Alors merci bcp !
    Le probleme c'est que je ne vois pas trop pourquoi ca marche.... ou plutot pourquoi ca marchais pas.... surment parceque je voulais dessiner qu'une ligne et pas un volume.

    Enfin bon, si vous avez plus d'explication, merci.

    A plus.

  5. #5
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    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
    ca peut etre normale que tu voit la sphere mais pas la ligne si tu utilise de blending, la sphere aussi va etre blendé...

    sinon je voit pas 36 solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    glEnable(GL_BLEND);
    GLDepthMask(GL-FALSE);// desactive l'ecriture dans le z buffer mais pas la lecture
    // dessin du cube
    // dessin des lignes
    glDepthMask(GL_TRUE);
    glDisable(GL_BLEND);
    voila avec ca ca devrait marcher...

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

Discussions similaires

  1. dessiner une ligne dans C#
    Par sofiane23 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 07/12/2008, 12h18
  2. Problèmes de dessin de ligne dans une JFrame .
    Par Pragmateek dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 24/03/2008, 16h11
  3. Réponses: 10
    Dernier message: 09/11/2005, 15h08
  4. Comment dessiner une ligne dans un Chart ?
    Par libititi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2005, 14h56
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 00h57

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