goutbouyo
Nouveau membre
Salut,
Je voudrais récupérer les coordonnées du curseur de ma souris dans ma fenêtre opengl.
C'est en 3D mais mon dessin est seulement en 2D (CamX,CamY), et il y a un zoom(zoom).
En regardant des posts j'ai trouvé quelques choses.
J'ai essayé comme ça :
Quand on clique bouton gauche souris
[cpp]case WM_LBUTTONDOWN:
GetCursorPos(&Cursor);
glGetIntegerv(GL_VIEWPORT,viewport);
glGetDoublev(GL_MODELVIEW_MATRIX,mvmatrix);
glGetDoublev(GL_PROJECTION_MATRIX,projmatrix);
gluProject ( CamX, CamY, 0, mvmatrix, projmatrix, viewport, &wx, &wy, &wz2 );
gluUnProject(Cursor.x, Cursor.y ,wz2 ,
mvmatrix, projmatrix, viewport, &wx, &wy, &wz);
break;[/cpp]
Fonction repaint
[cpp]void RePaint ()
{
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
gluLookAt (CamX,CamY,zoom,CamX,CamY,0,0,1,0);
//ici le zoom vaut -500
//dessine point aux coordonnées souris
glBegin (GL_POINTS);
glColor3d (32,1,8);
glVertex2i (wx,-wy);
glEnd ();
glCallList(cube2);
SwapBuffers (DC);
}[/cpp]
Le point que je dessine par rapport aux coordonés obtenus est toujours en rapport avec la souris mais il est toujours pas mal en dessous et un peu à droite de la souris.
Je comprends pas pourquoi ...
Pouvez vous m'aider SVP ???
Je voudrais récupérer les coordonnées du curseur de ma souris dans ma fenêtre opengl.
C'est en 3D mais mon dessin est seulement en 2D (CamX,CamY), et il y a un zoom(zoom).
En regardant des posts j'ai trouvé quelques choses.
J'ai essayé comme ça :
Quand on clique bouton gauche souris
[cpp]case WM_LBUTTONDOWN:
GetCursorPos(&Cursor);
glGetIntegerv(GL_VIEWPORT,viewport);
glGetDoublev(GL_MODELVIEW_MATRIX,mvmatrix);
glGetDoublev(GL_PROJECTION_MATRIX,projmatrix);
gluProject ( CamX, CamY, 0, mvmatrix, projmatrix, viewport, &wx, &wy, &wz2 );
gluUnProject(Cursor.x, Cursor.y ,wz2 ,
mvmatrix, projmatrix, viewport, &wx, &wy, &wz);
break;[/cpp]
Fonction repaint
[cpp]void RePaint ()
{
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
gluLookAt (CamX,CamY,zoom,CamX,CamY,0,0,1,0);
//ici le zoom vaut -500
//dessine point aux coordonnées souris
glBegin (GL_POINTS);
glColor3d (32,1,8);
glVertex2i (wx,-wy);
glEnd ();
glCallList(cube2);
SwapBuffers (DC);
}[/cpp]
Le point que je dessine par rapport aux coordonés obtenus est toujours en rapport avec la souris mais il est toujours pas mal en dessous et un peu à droite de la souris.
Je comprends pas pourquoi ...
Pouvez vous m'aider SVP ???