1

Gameplay というエンジンを使用して FPS デモを作成しています。現在、captureMouse() 関数をエンジンに定義して、プレイヤーがマップを見渡せるようにしようとしています。カーソルをウィンドウの中央に固定して非表示にすることはすでにできましたが、マウスを動かすと画面(カメラ)が動き回ると「振動」するようです。X11関数をいじくり回した後、カーソルをウィンドウの中央に戻すために使用しているXWarpPointer()関数が、イベントキューに「マウス移動」イベントを追加していることに気付きました。

X11 質問:イベント サイクルによってキャプチャされる前に、イベントを特定してイベント キューから削除するにはどうすればよいですか?

質問:同じような問題を別の方法で解決した人はいますか? もしそうなら、あなたは何をしましたか?

はっきりしていない場合は申し訳ありません。私は X11 について詳しい知識はありませんが、これをエンジンに追加する必要があり、それをゲームに追加することができます。

4

1 に答える 1

0

XtAppMainLoopを使用してイベントを処理していると思います。

これは実際には、XtAppNextEventの後にXtDispatchEventが続く呼び出しです。

XtAppMainLoopをXtAppNextEventを呼び出すループに置き換えて、次のイベントを取得し、そのタイプ(XEvent構造のタイプフィールド)を確認する場合。

イベント呼び出しXtDispatchEventを処理する場合は、それを無視するために何もしません。

XtAppGetExitFlagがtrueを返したとき(または独自の終了フラグを追加したとき)にループを終了する必要があります。

于 2013-01-04T09:11:04.397 に答える