GLUTが制限されており、次の問題はおそらくOpenGL / GLUTで解決できないことを私は完全に理解していますが、それができるかどうか正確にわからないので、私は尋ねるほうがよいでしょう。多分私は何か間違ったことをしている、または何か重要なことを忘れています。またはおそらくそうではなく、GLUTはこれより良くなりません。
私の問題は、ウィンドウ内にマウスを閉じ込められないことです。まあ、実際には、私はできる、以下のコードはそれだけを行います。マウスをウィンドウ内に閉じ込め、マウスを自由に使用して世界を回転させることができます。問題?マウスの動きが速すぎると、窓の刑務所から抜け出すことができます。
OpenGL / GLUTでこれを回避する方法はありますか、または唯一のオプションは別のライブラリか、Windows APIを直接呼び出すことですか?十分な言葉、これが私の現在のコードです:
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);