Saya sangat mengerti bahwa GLUT terbatas dan masalah berikut mungkin tidak dapat diselesaikan dengan OpenGL / GLUT, tetapi karena saya tidak tahu persis apakah itu bisa atau tidak, saya lebih baik bertanya. Mungkin saya melakukan sesuatu yang salah atau melupakan sesuatu yang penting. Atau mungkin tidak dan GLUT tidak lebih baik dari ini.
Masalah saya adalah saya tidak bisa menjebak mouse di dalam jendela. Sebenarnya saya bisa, kode di bawah tidak hanya itu. Saya menjebak mouse di dalam jendela dan saya dapat menggunakan mouse secara bebas untuk memutar dunia. Masalah? Jika saya menggerakkan mouse terlalu cepat saya bisa mendapatkan jalan dari penjara jendela.
Apakah ada cara untuk mengatasi hal ini dengan OpenGL / GLUT atau satu-satunya pilihan adalah pustaka lain atau langsung melakukan panggilan ke API Windows? Cukup kata-kata, ini kode saya saat ini:
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);