Opengl : lumière, fog pose problème quand picking [Résolu]

Signaler
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006
-
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006
-
Bonjour,
j'aimerais ajouté le fog et la lumière dynamique dans mon projet openGL.
Tout fonctionne bien, mais lors de la sélection d'un objet(picking), les objets deviennent noirs, et le fog produit un résultat inattendu.

voici le bout de code classique : (picking)

const BUFSIZE = 512;
GLuint selectBuf[BUFSIZE];
GLint hits;
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glSelectBuffer(BUFSIZE,selectBuf);
glRenderMode(GL_SELECT);
glInitNames();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluPickMatrix(event.GetX(), viewport[3]-event.GetY(), 2.0,2.0,viewport);
int w, h;
GetClientSize(&w, &h);
gluPerspective(60.0,(GLdouble)w/h,0.1,100.0);
Render();
glPopMatrix();
glFlush();
hits = glRenderMode(GL_RENDER);

Est ce que quelqu'un d'entre vous à déjà rencontré ce genre de problème ?
Merci de votre aide.
Cordialement.

5 réponses

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
glInitNames();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluPickMatrix(event.GetX(), viewport[3]-event.GetY(), 2.0,2.0,viewport);
int w, h;
GetClientSize(&w, &h);
gluPerspective(60.0,(GLdouble)w/h,0.1,100.0);

glMatrixMode(GL_MODELVIEW);

Render();
glFlush(); // a deplacer ici...

glMatrixMode(GL_PROJECTION);
glPopMatrix();
hits = glRenderMode(GL_RENDER);

glMatrixMode(GL_MODELVIEW);

Essaye avec les modifs en rouge.... ca marchera peut etre mieux...

KeniiyK
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ta quoi dans ta fonction Render ? tu peux la poster en résumé si possible.
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

J'ai ça :

Render()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);


glPushMatrix();
cam.SetToPos();
m_listeView->CallList(); ou bvArrayObject::GetInstance()->Display();
glPopMatrix();
glFlush();
}
tout marche bien, en tant normal sauf quand on selectionne un object graphique, tout foire ensuite.
merci
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
glInitNames();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluPickMatrix(event.GetX(), viewport[3]-event.GetY(), 2.0,2.0,viewport);
int w, h;
GetClientSize(&w, &h);
gluPerspective(60.0,(GLdouble)w/h,0.1,100.0);

glLoadMatrix(GL_MODELVIEW);
Render();
glFlush(); // a deplacer ici...

glMatrixMode(GL_PROJECTION);
glPopMatrix();
hits = glRenderMode(GL_RENDER);

glLoadMatrix(GL_MODELVIEW);

Essaye avec les modifs en rouge.... ca marchera peut etre mieux...

KeniiyK
Messages postés
65
Date d'inscription
dimanche 27 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2006

ah mais mince. Ouai, le problème venait du fais fait que j'avais oublier le 2eme glLoadMatrix(GL_MODELVIEW);


merci beaucoup KeniiyK.

C'est bizarre, je m'était inspiré du redbook, et eux aussi l'ont oublié. étrange mais merci quand même.