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 continuité de lignes en 2D


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 568
    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 568
    Par défaut Problème de continuité de lignes en 2D
    Bonjour, j'ai un problème avec le dessin 2D opengl

    j'utilise SDL pour l'interface système (fenêtre, souris, ect )
    je crée une fenêtre en 800 x 600
    puis j'initialise mon viewport de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 800 , 600, 0, -1, 1);
    ensuite je dessine un rectangle et je l'affiche de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
     
    glBegin(GL_LINE_LOOP);
    	glColor3ub(255,0,0);
    	glVertex2i( 10,  10);
    	glVertex2i(100,  10);
    	glVertex2i(100, 100);
    	glVertex2i( 10, 100);
    glEnd();
    SDL_GL_SwapBuffers();
    c'est pas grand chose et pourtant j'ai déjà un problème
    j'ai bien un rectangle dans le coin supérieur gauche de ma fenêtre mais il manque un pixel dans le coin en haut à droite de mon rectangle

    je n'arrive pas à trouver d'où vient le problème
    j'ai essayé de modifier dans le glOrtho les dimension en mettant
    glOrtho(0, 799 , 599, 0, -1, 1);
    ce qui ne change rien
    de même les glHint ne m'apportent rien
    et j'ai aussi essayé avec des glVector2f

    ma carte graphique est une ati radeon 9600, peut-etre un problème des pilotes ati ?

    si vous voulez voir ce que ca donne essayez de télécharger le zip ici :
    http://shenron.free.fr/testgl2d.zip

    déplacez le dessin dans les différents coins de la fenêtre d'affichage, vous verrez que la jonction des lignes se fait mal et pas de la même façon selon la position de la fenêtre et par endroit ce sont même les lignes qui se décalent

    si vous n'avez aucun problème faitent le moi savoir svp
    ... euh et si vous avez une solution aussi hein ?
    merci
    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.

  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
    alors ca c'est typiquement une mauvaise implementation au niveau du driver... attend je regarde la marque... a oui ATI il sont tres connu pour leur MERVEILLEUSE implementation openGL... bon ils ont fait des efforts depuis quelques temps mais c'est pas encore ca... et puis vu l'importance du bug je pense qu'il ne sera jamais resolu essaye simplement avec des GL_LINES simples...
    * 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
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 568
    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 568
    Par défaut
    Citation Envoyé par bafman
    alors ca c'est typiquement une mauvaise implementation au niveau du driver... attend je regarde la marque... a oui ATI il sont tres connu pour leur MERVEILLEUSE implementation openGL... bon ils ont fait des efforts depuis quelques temps mais c'est pas encore ca... et puis vu l'importance du bug je pense qu'il ne sera jamais resolu
    merci pour ta réponse Bafman, d'un côté cela ne m'étonne pas et j'avais opté pour cette carte graphique en constatant qu'ils avaient fait des efforts alors que nVidia se "plantait" avec ses GeForceFx

    j'aimerai en être certain qu'il s'agit d'un problème de driver mais je n'ai pas de carte autre qu'ati pour tester
    si quelqu'un pouvait tester mon prog avec une nvidia même tnt2 je pourrai en avoir le coeur net
    encore mieux si quelqu'un avec les 2 types de cartes pouvait constater la différence

    Citation Envoyé par bafman
    essaye simplement avec des GL_LINES simples...
    le problème est que j'ai essayé avec GL_LINES, GL_LINE_STRIP et GL_LINE_LOOP sans noter la moindre amélioration
    j'ai aussi essayé depuis des glVertex3f avec le Z à 0 (histoire de la forcer par moi même sait-on jamais)

    j'ai essayé par contre un GL_QUADS avec un glPolyMode(GL_LINE) histoire d'avoir un rectangle non rempli et là c'est bon
    mais si je veux avoir un rectangle avec une moitié d'une couleur (le haut et la gauche) et l'autre avec une autre couleur ... bah chui chocolat

    donc je suis toujours à la recherche d'une solution en me disant avec le temps qu'il n'y en a peut-etre pas
    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.

  4. #4
    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
    Citation Envoyé par shenron666
    le problème est que j'ai essayé avec GL_LINES, GL_LINE_STRIP et GL_LINE_LOOP sans noter la moindre amélioration
    j'ai aussi essayé depuis des glVertex3f avec le Z à 0 (histoire de la forcer par moi même sait-on jamais)
    heu... j'ai comme un doute la... tu serait pas en glLineWidth > 1 ? si c'est le cas, alors c'est absolument normal comme resultat, c'est la norme...

    Citation Envoyé par shenron666
    j'ai essayé par contre un GL_QUADS avec un glPolyMode(GL_LINE) histoire d'avoir un rectangle non rempli et là c'est bon
    mais si je veux avoir un rectangle avec une moitié d'une couleur (le haut et la gauche) et l'autre avec une autre couleur ... bah chui chocolat
    et hop la reponse magique : on peut specifier un glColor par glVertex...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    glBegin(GL_QUADS); 
       glColor3ub(255,0,0); 
       glVertex2i( 10,  10); 
     
       glColor3ub(0,255,0); 
       glVertex2i(100,  10); 
     
       glColor3ub(0,0,255); 
       glVertex2i(100, 100); 
     
       glColor3ub(255,255,255); 
       glVertex2i( 10, 100); 
    glEnd();
    et voila un beau quad avec une couleur differente par sommet et le tout interpolé comme il faut...
    * 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

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 568
    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 568
    Par défaut
    Citation Envoyé par bafman
    heu... j'ai comme un doute la... tu serait pas en glLineWidth > 1 ? si c'est le cas, alors c'est absolument normal comme resultat, c'est la norme...
    non, mon glLineWidth est à 1

    j'ai pris des screens de mon problème :
    http://shenron.rfee.fr/01.gif -> problème en haut et dans le coin en bas à droite
    http://shenron.rfee.fr/02.gif -> au centre pas de problème
    http://shenron.rfee.fr/03.gif -> problème dans le coin en haut à gauche du rectangle

    et quelqu'un à testé le prog sur une nvidia, ca le fait pas


    Citation Envoyé par bafman
    et hop la reponse magique : on peut specifier un glColor par glVertex...
    [...]
    et voila un beau quad avec une couleur differente par sommet et le tout interpolé comme il faut...
    ce n'est malheureusement pas si simple, je ne veux pas d'interpolation
    tu vas dire que je cherche compliqué mais tu m'as peut-etre apporté une solution
    je vais tester ta proposition avec glShadeModel(GL_FLAT) pour empêcher l'interpolation
    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.

Discussions similaires

  1. [Delphi 6+Interbase 6.01] Problème de disparition de lignes
    Par Tofdelille dans le forum Bases de données
    Réponses: 5
    Dernier message: 24/04/2006, 20h37
  2. [JTextArea] Problème ecriture sur plusieurs lignes
    Par Cyborg289 dans le forum Composants
    Réponses: 3
    Dernier message: 23/09/2005, 10h22
  3. CClientDC problème d'effaçage de ligne
    Par Nicolas69 dans le forum MFC
    Réponses: 2
    Dernier message: 21/07/2005, 18h34
  4. Problème de suppression de ligne dans ma base !
    Par gregman dans le forum ASP
    Réponses: 2
    Dernier message: 21/05/2005, 08h14
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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