Problème de continuité de lignes en 2D

Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
- - Dernière réponse : KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
- 11 mai 2005 à 20:47
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 :


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 :

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
Afficher la suite 

18 réponses

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Salut, fais plutot un gluOrtho2D(0, 800 ,0, 600) qu'un glOrtho(), testes et dis si ca marche...

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
Malheureusement cela ne fonctionne pas, ce qui ne m'étonne pas dans un
sens car gluOrtho2D est simplement un appel à glOrtho avec
near –1 et far 1

j'ai tout de même essayé au cas où mais sans succès



je me demande s'il y a une solution, je pense plus pour un problème de
driver ati, peut-etre toutes les ati, si quelqu'un pouvait tester avec
une nVidia et me dire ce qu'il a
Commenter la réponse de shenron666
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Ok, mais j'avais mis un ordre de parametre differents t'as change aussi ?
si tu as fait un glEnable(GL_CULL_FACE) fait attention a bien rentre tes faces en "face avant"

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Et au fait :
puis j'initialise mon viewport de la manière suivante :


glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 800 , 600, 0, -1, 1);
Ces commandes n'initialise pas le viewport, elles initialisent la matrice de projection, la commande pour initialiser le viewport c'est glViewport(.....)

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Pardon, j'avais pas teste ton zip, chez moi ca marche nikel (NVIDIA....), donc apparement c'est pas un probleme de projection ni de culling.
Par contre le rectangle ne peut pas alle jusqu'au bord droit -> reste 1 colonne de pixels
idem pour le bord du bas (voire 2 lignes de pixels....)
Et sur le bord du haut on dirai qu'il arrive a monter d'une ligne de trop....

KeniiyK

PS : pardon pour les precedents posts.... qui ne servent a rien
Commenter la réponse de KeniiyK
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
Merci beaucoup pour tes réponses Keniiyk, et merci d'avoir essayé le zip

pour ce qui est du rectangle qui monte trop haut ou descend trop bas c'est moi qui ait mal réglé mes paramètres

il va faloir que je trouve une autre solution, merci m'sieur ati et ses pilotes toujours en version béta (alpha?)
Commenter la réponse de shenron666
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
bon là je suis au boulot, je regarde mon prog et je viens d'essayer une solution alternative histoire de voir ce que ca donne :

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_QUADS);
glColor3ub( 64, 64, 64);
glVertex2i( 10, 10);
glVertex2i(100, 10);
glVertex2i(100, 100);
glVertex2i( 10, 100);
glEnd();

et le coin supérieur gauche merde encore
il ne me reste qu'à utiliser des GL_QUADS remplis

à coté de cela mon pc de boulot est équipé d'une carte graphique intérgrée intel
comme quoi il n'y a pas que ati qui fait n'importe quoi
Commenter la réponse de shenron666
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
dans le message précédent il falait comprendre

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

qui fait que seul le contour du polygone (ici un quad) est dessiné
pas de problème avec les polygones remplis
Commenter la réponse de shenron666
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Ouaip, j'avais quand meme compri, ce qui serai bien ca serai de voir un screenshot de ce que tu obtiens. Car j'ai quand meme du mal a croire que ATI soit autant a la ramasse... surtout avec la CG que tu as....


Sinon autre solution : les textures mais plus difficile a controle.... enfin ca depend de ce que tu comptes faire par la suite.





KeniiyK
Commenter la réponse de KeniiyK
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
j'ai uploadé des captures avec le rectangle qui déconne en haut à gauche et en bas à droite :

http://shenron.free.fr/01.gif
http://shenron.free.fr/03.gif

alors qu'il est nickel au centre de la fenêtre :

http://shenron.free.fr/02.gif

en fait, le but de mon appli est une interface utilisateur, et donc des fenêtres, des boutons, des checkbox ect... tout ce qui peux servir à une interface mais je la veux purement opengl

le projet est à peine avancé, j'ai les bases et j'étais simplement en train d'essayer de "dessiner" des fenêtres avec un effet 3D, en faisant une partie claire et une partie foncée
finalement je vais être obligé d'utiliser des GL_QUADS remplis et donc si je veux simuler un effet de profondeur comme tu dis il faudra que je triche avec des textures ou simplement avec plus de polygones et des dégradés de couleur
Commenter la réponse de shenron666
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
j'ai uploadé des captures avec le rectangle qui déconne en haut à gauche et en bas à droite :

http://shenron.free.fr/01.gif
http://shenron.free.fr/03.gif

alors qu'il est nickel au centre de la fenêtre :

http://shenron.free.fr/02.gif

en fait, le but de mon appli est une interface utilisateur, et donc des fenêtres, des boutons, des checkbox ect... tout ce qui peux servir à une interface mais je la veux purement opengl

le projet est à peine avancé, j'ai les bases et j'étais simplement en train d'essayer de "dessiner" des fenêtres avec un effet 3D, en faisant une partie claire et une partie foncée
finalement je vais être obligé d'utiliser des GL_QUADS remplis et donc si je veux simuler un effet de profondeur comme tu dis il faudra que je triche avec des textures ou simplement avec plus de polygones et des dégradés de couleur
Commenter la réponse de shenron666
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Arf j'etais au boulot et je voulais tester, parce que j'ai une ATI X300 et j'aurai pu te dire ce que j'obtenai...... MAIS il me manque MSVCP71.dll, je bosse sous Visual C++ 6, donc si tu pouvais mettre la DLL dans le zip.... merci.

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
J'ai mis à jour le zip en y intégrant la dll demandée



j'espère qu'il n'en manque pas une autre
Commenter la réponse de shenron666
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Ok, sauf que la je viens de rentrer, donc je testerai ca Lundi car ptit week end de 4 jour....

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
Ouin snif le week end de 4 jours se termine



bon j'en ai profité pour modifier mon programme et j'ai pris une autre
orientation, tant pis pour les lignes, je verrai si je trouve des
moyens d'optimiser pour gagner en vitesse plus tard, je vais bidouiller
comme je peux avec les textures si cela s'avérait nécessaire



en attendant voilà ce que ca donne, c'est pas grand chose mais c'est un début :

http://shenron.free.fr/glui_test.jpg



et si tu télécharge le fichier zip cité dans le premier post j'y ai
ajouté un exe au cas où tu voudrais tester, les 3 boutons de la souris
servent à bouger certaines fenêtres



A+
Commenter la réponse de shenron666
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Re-Salut, donc nous etions Lundi aujourd'hui et j'ai teste au boulot.... encore un probleme de DLL.... completement oublie de poste ensuite les noms donc demain..... Désolé....

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
0
Merci
Pas de problème, merci pour ton aide en tout cas



en plus j'ai pas trop le temps d'avancer en ce moment, un autre projet perso en cours et encore plus au boulot



sinon j'ai réfléchit au principal inconvénient de la méthode qui
fonctionne, cette méthode consite simplement en des GL_QUADS pleins en
dessinant du fond vers le devant à la méhode du peintre

et cela m'ennuie pour 2 raisons :

- d'abord l'overdraw, on dessine pleins de fois par dessus des endroits qu'on a déjà dessiné

- ensuite pour la transparence



le solution sera peut-etre d'utiliser le stencil buffer et de dessiner
les fenêtres toujours de celle la plus en dessous vers celle la plus au
dessus tout en dessinant d'abord les objets contenus dans la fenêtre du
plus proche au plus éloigné



enfin bon tout cela n'intéresse peut-etre que moi lol



A+
Commenter la réponse de shenron666
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
0
Merci
Désolé, j'ai pas eu le temps de tester mais promis ca viendra (avant noel j'espere...)

KeniiyK
Commenter la réponse de KeniiyK