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

マウスに触れていないのにカメラが回転している場合は、回転を何度も繰り返している可能性があります。最初に(OpenGL 2の固定機能で)カメラビューマトリックスをリセットしてからglLoadIdentity()、フレームごとに回転を適用できます。そうすれば、前のフレームからの回転の結果である最後の参照点ではなく、フレームごとに固定の参照点からのみ回転します。

于 2013-01-05T00:58:53.197 に答える