Tôi hoàn toàn hiểu rằng GLUT bị hạn chế và vấn đề sau có lẽ không thể giải quyết được với OpenGL / GLUT, nhưng vì tôi không biết chính xác liệu nó có thể hay không, tốt hơn tôi chỉ nên hỏi. Có lẽ tôi đang làm gì đó sai hoặc quên điều gì đó quan trọng. Hoặc có lẽ là không và GLUT không trở nên tốt hơn thế này.
Vấn đề của tôi là tôi không thể nhốt con chuột bên trong cửa sổ. Vâng, thực sự, tôi có thể, mã dưới đây làm điều đó. Tôi nhốt con chuột bên trong cửa sổ và tôi có thể sử dụng chuột một cách tự do để xoay thế giới. Vấn đề? Nếu tôi di chuyển chuột quá nhanh, tôi có thể thoát khỏi cửa sổ nhà tù.
Có cách nào khác với OpenGL / GLUT hoặc tùy chọn duy nhất là một thư viện khác hoặc thực hiện một số cuộc gọi trực tiếp tới API Windows? Đủ từ, đây là mã hiện tại của tôi:
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);