Opengl : lumière, fog pose problème quand picking

Résolu
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006 - 21 oct. 2005 à 10:52
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006 - 22 oct. 2005 à 14:43
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

KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 oct. 2005 à 18:18
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
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 oct. 2005 à 12:53
Ta quoi dans ta fonction Render ? tu peux la poster en résumé si possible.
0
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006
21 oct. 2005 à 13:08
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
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
21 oct. 2005 à 18:17
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
0

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

Posez votre question
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006
22 oct. 2005 à 14:43
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.
0
Rejoignez-nous