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 dégradé de couleur sur un tracé de 3 lignes


Sujet :

OpenGL

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut problème de dégradé de couleur sur un tracé de 3 lignes
    Bonjour,

    Je voudrais tracer un repère XYZ composé de trois lignes mais j'ai un problème que je ne comprends pas du tout dans mon code. Si j'appelle une liste, la ligne représentant l'axe Z est colorié en dégradé de rouge à bleu, par contre en effectuant le tracé sans passer par une list cela fonctionne très bien. Voici mon 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
     
     
    // Dans ma fonction Draw()
    ...
    /* essai de repère */
    	glPushMatrix();
    	glTranslated(-3,3,0);
    	/* couleur marche */
    	glBegin(GL_LINES);
    		glColor3f(1.0f,0.0f,0.0f); // Rouge
    		glVertex2i(0,0); glVertex2i(1,0); // X
    		glColor3f(0.0f,1.0f,0.0f); // Vert
    		glVertex2i(0,0); glVertex2i(0,1); // Y
    		glColor3f(0.0f,0.0f,1.0f); // Bleu
    		glVertex2i(0,0); glVertex3i(0,0,1); // Z
    	glEnd();
     
    	glTranslated(-5,3,0);
    	/* couleur marche pas, Z est en dégradé de rouge à bleu */
    	glCallList(idRepere);
    	glPopMatrix();
    /* ------------------------------ */
    ...

    J'initialise la liste avant d'appeler Draw avec la fonction suivante :

    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
     
    /* Initialisation d'un repère x, y, z et création d'une liste */
    void InitListRepere(void)
    {
    	idRepere = glGenLists(1);
     
    	glNewList(idRepere,GL_COMPILE); 
    	/* Tracé d'un repère x, y, z */
    	glBegin(GL_LINES);
    		glColor3f(1.0f,0.0f,0.0f); // Rouge
    		glVertex2i(0,0); glVertex2i(1,0); // X
    		glColor3f(0.0f,1.0f,0.0f); // Vert
    		glVertex2i(0,0); glVertex2i(0,1); // Y
    		glColor3f(0.0f,0.0f,1.0f); // Bleu
    		glVertex2i(0,0); glVertex3i(0,0,1); // Z
    	glEnd();
    	glEndList(); 
    }
    En espérant que quelqu'un pourra m'aider.
    Merci d'avance pour vos réponses.
    Bye
    Vive les roues en pierre

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Tu ne devrais pas mélanger des Vertex 2D avec des Vertex 3D.

    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
    void InitListRepere(void) 
    { 
       idRepere = glGenLists(1); 
     
       glNewList(idRepere,GL_COMPILE); 
       /* Tracé d'un repère x, y, z */ 
       glBegin(GL_LINES); 
          glColor3f(1.0f,0.0f,0.0f); // Rouge 
          glVertex2i(0,0); glVertex2i(1,0); // X 
          glColor3f(0.0f,1.0f,0.0f); // Vert 
          glVertex2i(0,0); glVertex2i(0,1); // Y 
          glColor3f(0.0f,0.0f,1.0f); // Bleu 
    // J'ai changé le premier Vertex à 3D
          glVertex3i(0,0,0); glVertex3i(0,0,1); // Z 
       glEnd(); 
       glEndList(); 
    }

  3. #3
    Membre habitué Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par Grficos
    Tu ne devrais pas mélanger des Vertex 2D avec des Vertex 3D.
    Est ce que ça change réellement quelque chose ? Les versions 2D ne sont que des 3d avec un z à 0

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut et merci pour vos réponses

    Oui je ne pense pas que cela soit mauvais, c'est juste que la fonction prend 0 en Z à mon avis aussi. De toute façon ca ne change rien

    Quelqu'un pourrait-il me rappeler la commande pour passer du mode 'dégradé' au mode 'fill' ou quelques chose comme ça, je m'en souviens plus. :/

    ++
    Vive les roues en pierre

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    glShadeModel(GL_FLAT)? Tu pensais à cela?

  6. #6
    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
    Citation Envoyé par Djakisback
    Salut et merci pour vos réponses

    Oui je ne pense pas que cela soit mauvais, c'est juste que la fonction prend 0 en Z à mon avis aussi. De toute façon ca ne change rien
    malheureusement ce n'est pas forcement le cas j'ai deja eut le probleme de valeurs que je penssait etre utilisée a une valeure par defaut, sur NVidia ca marchait sans probleme, sur ATI, la valeure pointait quelque part en memoire et bugait completement... donc toujours essayer de donner ses propres valeures quand on peut...

    sinon pour ton probleme je ne voit pas d'ou ca peut venir a part les driver (one again ) mais de toute facon, utiliser un display list pour ce genre d'affichage risque de prendre plus de temps que d'appeler la fonction d'affichage a chaque fois. En effet, l'appel de display list a un cout qui, quand le nombre de commandes dans la display list est faible, risque d'etre plus important que le dessin en lui même...
    * 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

  7. #7
    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
    Citation Envoyé par Djakisback
    Salut et merci pour vos réponses

    Oui je ne pense pas que cela soit mauvais, c'est juste que la fonction prend 0 en Z à mon avis aussi. De toute façon ca ne change rien
    malheureusement ce n'est pas forcement le cas j'ai deja eut le probleme de valeurs que je penssait etre utilisée a une valeure par defaut, sur NVidia ca marchait sans probleme, sur ATI, la valeure pointait quelque part en memoire et bugait completement... donc toujours essayer de donner ses propres valeures quand on peut...

    sinon pour ton probleme je ne voit pas d'ou ca peut venir a part les driver (one again ) mais de toute facon, utiliser un display list pour ce genre d'affichage risque de prendre plus de temps que d'appeler la fonction d'affichage a chaque fois. En effet, l'appel de display list a un cout qui, quand le nombre de commandes dans la display list est faible, risque d'etre plus important que le dessin en lui même...
    * 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

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    De toute façon ca ne change rien
    Curieux, je l'ai compilé et en effet la ligne Z est en degradé, mais après fait le changement à 3D, tout apparaît parfaitement.

    Pour un exemple:
    http://es.geocities.com/grficos/downdload.html

  9. #9
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,

    ayayaye désolé pour le dérangement Grficos et les autres, en effet le problème venait bien de :

    glVertex2i(0,0); glVertex3i(0,0,1); // Z

    j'ai fait le test un peu vite et avait testé glVertex3i(0,0,0); à l'extérieur de la liste et non dedans, quel boulet.
    Pour récapituler :

    glVertex2i(0,0); glVertex3i(0,0,1); // Z

    ne marche pas dans une liste mais sans, oui.

    Finch-> en effet je pensais à celle-là mais elle ne fait ce que je pensais
    Bafman-> sympa tes conseils , donc j'imagine que pour un cube, c'est pas la peine non plus de passer pas une liste ?

    Bye et merci à tous et sorry again (Faut pitetre que je coche délestage sur ce coup-là, nan, quoique ?)
    Vive les roues en pierre

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/10/2010, 16h10
  2. Réponses: 7
    Dernier message: 28/07/2010, 03h22
  3. Réponses: 4
    Dernier message: 15/02/2008, 10h36
  4. Problème de couleur sur écran portable
    Par Aitone dans le forum Périphériques
    Réponses: 17
    Dernier message: 16/01/2007, 12h55
  5. Réponses: 5
    Dernier message: 17/11/2006, 17h49

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