Je comprends parfaitement que GLUT est limité et le problème suivant ne peut probablement pas être résolu avec OpenGL / GLUT, mais comme je ne sais pas exactement si cela peut ou non, je ferais mieux de demander. Peut-être que je fais quelque chose de mal ou que j'oublie quelque chose d'important. Ou probablement pas et GLUT ne va pas mieux que ça.
Mon problème est que je ne peux pas piéger la souris à l'intérieur de la fenêtre. Eh bien, en fait, je peux, le code ci-dessous fait exactement cela. Je piège la souris à l'intérieur de la fenêtre et je peux utiliser la souris librement pour faire tourner le monde. Le problème? Si je déplace la souris trop vite, je peux m'éloigner de la prison de fenêtre.
Existe-t-il un moyen de contourner cela avec OpenGL / GLUT ou la seule option est une autre bibliothèque ou de passer directement des appels à l'API Windows? Assez de mots, voici mon code actuel:
void processPassiveMouseMotion(int x, int y) {
static int centerX = glutGet(GLUT_WINDOW_WIDTH) / 2;
static int centerY = glutGet(GLUT_WINDOW_HEIGHT) / 2;
CameraAngle.x = -1.0f * (y - centerY);
CameraAngle.y = -1.0f * (x - centerX);
if(CameraAngle.x != 0.0f || CameraAngle.y != 0.0f) {
SceneCamera.Rotate(CameraAngle);
glutPostRedisplay();
glutWarpPointer(centerX, centerY);
}
}
glutPassiveMotionFunc(processPassiveMouseMotion);