0

シーンを「飛ぶ」ためにFPSスタイルのマウスルックを実装しています。

私は正しいカメラの回転とすべてを持っています、私の唯一の問題は、マウスを画面の中央にワープしようとすると、glutPassiveMotionFuncコールバックへの複数の呼び出しを実行することです。したがって、マウスをテレポートする代わりに、いくつかの動きでマウスをそこに移動します。これらの動きは処理され、カメラを元の位置に戻します。

マウスが実際に動かされ、glutWarpPointer関数によってトリガーされていないことを確認するにはどうすればよいですか。

ポインタが画面の中央にある場合は動きを処理しないようにしましたが、これは役に立ちません。

プログラムをLinuxとWindowsで実行したいので、OS固有の機能を使用できません。

4

1 に答える 1

0

私はこれを素晴らしい解決策とは呼びませんが、うまくいくはずです:

bool isWarpingPointer = false;

void MyPassiveMovementCallback()
{
    if (isWarpingPointer)
    {
        return;
    }

    //proceed normally
}

//elsewhere
isWarpingPointer = true;
glutWarpPointer();
isWarpingPointer = false;
于 2013-03-11T18:34:49.303 に答える