OpenGL鼠标输入

时间:2013-01-05 00:15:29

标签: java opengl input mouse lwjgl

我的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;

}

我旋转了#34;相机"使用此代码:

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

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

1 个答案:

答案 0 :(得分:0)

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