IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Coordonnées souris OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut Coordonnées souris OpenGL
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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;
    Fonction repaint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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);
    }
    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 ???

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 70
    Par défaut
    Question débile qui n'a peut-être rien à voir (je comprends pas la premier e partie du code sauf le GetCursorPos(...) ): t'as le même problème en fullscreen ?

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Par défaut
    GetCursorPos donn les coord absolues = par rapport a l ecran et non a ta fenetre donc normal k ca marche pas

    par contre kan tu recois un msg WM_MOUSEMOVE (ptetr mem l autr lbuttondown) LOWRD(lparam) c le x et HIWORD le y d la souris dan la zone client de ta fenetre

    ensuite fo avoir un moyen de dessiner sur cet emplacement a l ecran en general tu peu remettr ta matrice d projection a 1 (glloadidentity un truc comm ca) et la c ke tu vois c la zone (-1,-1)-(1,1) (==> dessiner un point a (-1,-1) en opengl = en bas a gauche (0,0) = centre de l ecran ... etc)
    donc en conaissant la taille de ta fenetre (recuperable par LO/HIWORD(lparam) sur un msg WM_SIZE) tu peu deduire la suite

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 108
    Par défaut
    En fait ton décallage correspond à la hauteur de ta barre de titre et aux bordure de ta fenêtre.

    Le problème vient de la création de la fenêtre. Il faut que tu utilises AdjustWindowRect ou AdjustWindowRectEx juste avant la création de celle-ci pour que ce soit la zone cliente qui à la résolution que tu souhaites.

Discussions similaires

  1. opengl/glut Probleme de coordonnées souris/écran
    Par johan_b dans le forum OpenGL
    Réponses: 5
    Dernier message: 05/12/2006, 17h42
  2. L'int 33h pour les coordonnées souris ?
    Par Psychoroid dans le forum Assembleur
    Réponses: 2
    Dernier message: 09/10/2006, 23h44
  3. Coordonnées souris sur un layer
    Par renaud26 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/08/2006, 20h41
  4. Coordonnées souris -> cellule de tKstringgrid
    Par qi130 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/12/2005, 23h16
  5. syntaxe coordonné souris
    Par gaut dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 19h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo