Pb en openGL avec GL_LINES

F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008 - 29 déc. 2007 à 10:14
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008 - 31 déc. 2007 à 16:14
Bonjour, j'ai un problème avec GL_LINES en openGL.
J'ai réalisé une fonction pour afficher une ligne.
Sur l'image, les lignes devraient se toucher :

void DrawLine(int X0,int Y0,int X1,int Y1)
{
 glPushMatrix();
 glEnable(GL_TEXTURE_2D);
 glEnable(GL_BLEND);
 glBegin(GL_LINES);
  glVertex3f( Y0, 0.0f, -X0);
  glVertex3f( Y1, 0.0f, -X1);
  glEnd();
 glDisable(GL_BLEND);
 glPopMatrix();
}
 
...
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
g_Camera.Look();
gluLookAt( 1, 0, 0, 0,0, 0,   0, 1, 0);
      for(int j = 0; j <100; j++)  DrawLine(300,300+j,  400  ,300+j);
SwapBuffers(g_hDC); 
...


Pourquoi je n'utilise pas GL_QUARDS ?
Dans mon programme j'ai besoin  d'afficher une ligne, et parfois elles sont proches.
j'ai  quand même esayé avec GL_QUARDS, et je constate qu'il y a une ligne disparais aussi.


Comment faire pour résoudre se problème ?
Merci beaucoup
@+

11 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
31 déc. 2007 à 13:00
GL_QUARDS ? n'existe pas.GL_ QUADS oui.

L'explication de ton problème ? simple ... ca vient de ta matrice de projection. Tu l'initialises comment ?
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
31 déc. 2007 à 14:02
Bonjour,
Merci d’avoir répondu
Si tu me parles de ça :
void SizeOpenGLScreen(int width, int height)
{
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); 
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 1 ,5500.0f);
}
et :
float ee=1000.0f;
float hh=360;
float vv=ee/2-60;
g_Camera.PositionCamera(vv, ee,hh,   vv ,0, hh-0.1f,       0.0f, 1.0f, 0.0f);


Je ne peux pas vraiment trop changer ses paramètres, sinon, ça va tout me décaler dans mon jeu.
http://s.w.o.free.fr/Image/swo.jpg

Je suis impatient de connaître ta solution.
Merci
@+
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
31 déc. 2007 à 14:05
ha oui, j'ai esayé avec glVertex2f
je n'y arrive pas
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
31 déc. 2007 à 14:12
Bon avant de te répondre, c'est quoi l'intéret de tracer 100 lignes collées ? Pourquoi ne traces tu pas directement un rectangle plein ?
0

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

Posez votre question
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
31 déc. 2007 à 14:19
Je constate au dessus des chars quand ils se déplacent, avec un rectangle plein ou non,Il y a une ligne qui disparaît.
Donc, j’ai fais un programme test et simple et je constate qu’il y a le même problème a l’affichage.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
31 déc. 2007 à 14:25
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height, 1 ,5500.0f);
=> Avec une matrice de projection comme ca, tu ne pourras jamais etre certain qu'il n'y est pas de trou entre tes lignes... Pk ? car il n'y a aucun rapport entre les coordonnées objets et les coordonnées écran. Donc 1 unité objet n'a jamais et ne fera jamais 1 pixel (sauf avec des matrices de projection prévue pour).

Donc laisse tombé ton test, et montre nous le réel problème. Tu as une screen que t'as lignes qui disparait et une description plus précise du problème ?
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
31 déc. 2007 à 14:36
Ok, je suis d'accord.
Je t'ai déjà tout expliqué, et je ne pas changer les paramètres gluPerspective() a cause de la map. Et je dois afficher un rectangle ou une ligne avec la résolution 1280x1024.

Je dois quand même bien pouvoir réaliser un rectangle avec la résolution 1280x1024 d'une manière ou une autre.
@+
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
31 déc. 2007 à 14:48
"Je constate au dessus des chars quand ils se déplacent, avec un rectangle plein ou non,Il y a une ligne qui disparaît."
=> Ca veut dire quoi ca ? dans un rectangle plein, une ligne qui disparait, j'ai du mal à imaginer.




Sinon ton rectangle, tu veux qu'il soit placer à un endroit précis je suppose, tu connais ses coordonnées sur l'écran ou dans le répère objet ?
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
31 déc. 2007 à 14:58
UNE ligne de dessus ou dessous du rectangle disparaît. On le constate  bien avec le petit programme test quand j’incrémente de 1.
Oui, je connais les repères des objets.
Et oui, j'ai réalisé un calcul pour connaître la nouvelle résolution pour afficher.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
31 déc. 2007 à 15:18
Ah oue excuse moi, j'avais pas vu la screen. Par contre, je vois pas de quelle ligne tu parles. Je ne vois pas le pb sur la screen.
Le tank en bas a gauche, il devrait avoir des barres ?

Sinon, dans le doute, désactives le zbuffer avant de dessiner tes barres de vie,etc...
glDisable(GL_DEPTH_TEST);
// Affiches tes barres
glEnable(GL_DEPTH_TEST);
0
F0ra Messages postés 111 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 29 décembre 2008
31 déc. 2007 à 16:14
Il y a des barres quand il est sélectionné.
Dans la démo, il y a pas se problème cependant les barres vont trop a droite ou gauche car elle sont trop haute par rapport aux chars, car elle sont plasser sur la caméra de la map et non avec la résolution de l'écran.
Laisse tombé, je vais essayer de me débrouiller.
Merci quand même
@+
0
Rejoignez-nous