我的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()
。有人可以提供帮助吗?基本上总的来说,我的相机非常生涩,并且可以非常快速地以随机模式旋转相机。
答案 0 :(得分:0)
即使您没有触摸鼠标,如果相机正在旋转,您可能会一遍又一遍地应用旋转。您可以首先重置相机视图矩阵(OpenGL 2固定功能中为glLoadIdentity()
),每帧,然后然后应用旋转。这样,您将只从每帧的固定参考点旋转,而不是从前一帧旋转的最后一个参考点。