OpenGL /GLUT を使用して、2 つのキーが同時に押されたことをどのように検出しますか?

StackOverflow https://stackoverflow.com/questions/866679

  •  22-08-2019
  •  | 
  •  

質問

OpenGL /GLUT を使用して、2 つのキー、たとえば「a」と「j」が同時に押された場合、どのように検出すればよいでしょうか?

(このプログラムは OSX GCC、Windows GCC、Windows VS2005 でコンパイルする必要があるため、OS に依存するハックは行わないでください。)

役に立ちましたか?

解決

次のことを試してください。

  1. 使用 glutIgnoreKeyRepeat 物理的なキーダウン/キーアップ イベントのみを取得する
  2. 使用 glutKeyboardFunc キーダウン イベントをリッスンするコールバックを登録します。
  3. 使用 glutKeyboardUpFunc キーアップ イベントをリッスンするコールバックを登録します。
  4. を作成します bool keystates[256] キーボードのキーの状態を保存する配列。
  5. キーダウン コールバックを通じてイベントを受信するときに、次のように設定します。 keystates[key] = true.
  6. キーアップ コールバックを通じてイベントを受信するときに、次のように設定します。 keystates[key] = false.
  7. 実行ループで、次のことをテストします。 (keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J']).

その方向を見てください。テストはしていませんが、動作するはずです。また必要になるかもしれません glutSpecialFunc そして glutSpecialUpFunc 「特別な」キーのメッセージを受信します。

また、GLUT は非常に古いものであり、より優れた代替手段があることにも注意してください。

他のヒント

「よりよい選択肢」によって、あなたは簡単で、GLUT-独立した入力機能を意味するならば、GetAsyncKeyState機能を持って...

MSDN - GetAsyncKeyState関数

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top