我试图使用OPENGL做第一个凸轮人。但这是我的问题。 我来介绍一下我的代码。 首先,我有这个功能,允许我获得鼠标X和Y位置:
case WM_MOUSEMOVE:
CameraManager.oldMouseX = CameraManager.mouseX;
CameraManager.oldMouseY = CameraManager.mouseY;
CameraManager.mouseX = GET_X_LPARAM(lParam);
CameraManager.mouseY = GET_Y_LPARAM(lParam);
mousePoint.x = CameraManager.mouseX - CameraManager.oldMouseX;
mousePoint.y = CameraManager.mouseY - CameraManager.oldMouseY;
mousePoint.z = 0.f;
CameraManager.lookAt(mousePoint);
App.onRender();
break;
这里我得到了旧鼠标位置和新鼠标位置之间的区别(只是因为我想知道何时必须增加/减小角度)。然后,我在CameraManager上调用lookAt函数。
我在这里执行以下操作:
if (point.x > 0.f) {
camAngle.x -= 0.3f;
}
else if (point.x < 0.f) {
camAngle.x += 0.3f ;
}
float radiansX = MathUtils::CalculateRadians(camAngle.x);
//eye.x = sinf(radiansX);
//center.x += sinf(radiansX);
//center.z += (-cosf(radiansX));
Update();
然后我的更新确实:
glLoadIdentity();
gluLookAt(eye.x, eye.y, eye.z,
center.x, center.y, center.z,
up.x, up.y, up.z);
我已经阅读了很多关于如何刷新眼睛和中心的东西,但我无法获得任何工作。
有任何建议吗?