1

我的 OpenGL 程序中有这个鼠标功能:

public void mouseInput(){
    int mouseX = Mouse.getX();
    int mouseY = 600 - Mouse.getY();
    int mouseDX = 0, mouseDY = 0;
    int lastX = 0, lastY = 0;

    mouseDX = mouseX - lastX;
    mouseDY = mouseY - lastY;

    lastX = mouseX;
    lastY = mouseY;

    xrot += (float) mouseDX;
    yrot += (float) mouseDY;

}

我使用以下代码旋转“相机”:

glRotatef(xrot, 1.0f, 0.0f, 0.0f);
    glRotatef(yrot, 0.f, 1.0f, 0.0f);

我在!DisplayIsClosedRequested循环中调用 mouseInput() 函数。目前这会导致我的游戏崩溃,即使我没有触摸鼠标,我的相机也会到处旋转。我渲染出来的立方体也会在屏幕上随机移动。我正在使用 LWJGL,所以我不能使用任何过剩函数,如glutPassiveMotionFunc(). 任何人都可以提供帮助吗?总的来说,我的相机非常不稳定,并且以随机模式快速旋转相机。

4

1 回答 1

0

如果即使您没有触摸鼠标,相机也在旋转,您可能会一遍又一遍地应用旋转。您可以先重置相机视图矩阵(glLoadIdentity()在 OpenGL 2 固定功能中),每帧,然后应用旋转。这样,您将只从每帧的固定参考点旋转,而不是从前一帧旋转的最后一个参考点。

于 2013-01-05T00:58:53.197 回答