2009-04-24 9 views
4

J'écris un jeu simple et je vais avoir la souris pour contrôler la caméra (en utilisant GlutPassiveMotionFunc). Je vais faire un tangage et un lacet basés sur la différence de la souris entre les rappels, mais je pense que ce serait une bonne idée de "forcer" la souris au centre de l'écran chaque fois qu'ils ont essayé de le déplacer. De cette façon, leur curseur ne sera pas sur le bord de l'écran et ils ne peuvent pas aller plus loin dans cette direction.Comment changer la position du curseur de la souris dans OpenGL/Glut?

Quelle commande Glut/OpenGL puis-je utiliser pour forcer la position de la souris à changer?

Répondre

10

utilisation glutWarpPointer(x, y), où x et y (les deux int s) sont en pixels (par rapport à l'origine de la fenêtre). Par exemple:

glutWarpPointer(windowWidth/2, windowHeight/2); 
+0

Cette solution ne fonctionne pas pour moi, car le glutWarpPointer (x, y) réinitialise également les positions de la souris. –

+0

Que voulez-vous dire par "réinitialise la position de la souris"? C'est ce qu'il est censé faire (dans ce cas, vous lisez la position de la souris avant d'appeler glutWarpPointer pour recentrer la souris). Peut-être que je ne comprends pas ce que vous essayez de faire? – hbw

0

Désolé pour la réponse en retard. Ce que je voulais dire, c'est qu'après avoir utilisé la fonction glutWrapPointer, si j'imprime les valeurs x et y, je ne pouvais pas saisir le changement sur le curseur et il imprime toujours les valeurs à l'intérieur de la fonction glutWrapPointer fournie. Ce que j'ai fait pour le réparer était de déplacer cette fonction dans la fonction Animate d'openGl et ça a bien fonctionné.

Questions connexes