Bonjour à tous !!
Malgré mes recherches sur le net, je n'ai pas réussi à trouver une réponse précise à ma question alors me voiçi.
Je voudrais en effet detecter le clic d'une souris sur un carré précis.
En effet j'ai crée un carré basique qui est :
( à savoir que je travaille avec opengl ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 glColor3f( 5.0, 5.0, 5.0 ); glBegin(GL_QUADS); glVertex3f( -100 ,-50, 0); glVertex3f( -100, 0, 0); glVertex3f(-50, 0, 0); glVertex3f( -50, -50, 0); glEnd();
J'ai entendu dire qu'il fallait convertir ces coordonnées en pixel, j'ai alors mis mon origine tout en bas à gauche de mon écran :
avec 1024 en longueur et 768 en largeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gluOrtho2D(0, longueur, 0, largeur);
j'ai X et Y qui enregistre la position de ma souris :
et je voudrais que si je clic sur mon carré ma procédure change_case ( dont le but n'est pas important ici ) sera executée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part glfwGetmousepos(X,Y);
quel est le coefficient avec lequel je dois multiplier mes coordonnées pour leur donner la valeur en pixel ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if glfwgetmousebutton(glfw_mouse_button_left) = 1 then begin if /* X compris entre -100 et - 50 et Y compris entre -50 et 0 */ then change_case; end;
j'ai essayé de multiplier les X par (X*1024)/200 et les Y par (Y*768)/500
A savoir que lorsque j'ai mis mon origine en bas à gauche, j'ai du faire un
glTranslate(650,350,0) à mon carré pour qu'il soit au centre de l'écran, celà influe-t-il à la coordonnée ?
Merci pour vos réponses, en ésperant avoir été assez clair.
Partager