OpenGL第一人称相机

时间:2017-06-27 14:53:54

标签: c++ opengl glu

我试图使用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);

我已经阅读了很多关于如何刷新眼睛和中心的东西,但我无法获得任何工作。

有任何建议吗?

0 个答案:

没有答案