Problème de continuité de lignes en 2D

shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014 - 2 mai 2005 à 14:25
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

18 réponses

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

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
2 mai 2005 à 21:58
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
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
3 mai 2005 à 09:24
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?)
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
3 mai 2005 à 09:58
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
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
3 mai 2005 à 14:19
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
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
3 mai 2005 à 17:06
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
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
4 mai 2005 à 15:27
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
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
4 mai 2005 à 15:34
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
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
4 mai 2005 à 18:07
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
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
4 mai 2005 à 20:30
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
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
4 mai 2005 à 21:00
Ok, sauf que la je viens de rentrer, donc je testerai ca Lundi car ptit week end de 4 jour....

KeniiyK
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
8 mai 2005 à 23:53
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+
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
9 mai 2005 à 20:09
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
0
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
10 mai 2005 à 00:41
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+
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
11 mai 2005 à 20:47
Désolé, j'ai pas eu le temps de tester mais promis ca viendra (avant noel j'espere...)

KeniiyK
0
Rejoignez-nous