【问题标题】:OpenGL Mouse InputOpenGL 鼠标输入
【发布时间】:2013-01-05 08:58:53
【问题描述】:

我的 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() 这样的任何过剩函数。任何人都可以提供帮助吗?基本上总而言之,我的相机非常不稳定,并且以随机模式快速旋转相机。

【问题讨论】:

    标签: java opengl input mouse lwjgl


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多