ゲームなどのプログラムでキーボード入力を処理する好ましい方法は何ですか? directX 入力は最も簡単な選択ですか? 他のオプションは何ですか?
5 に答える
DirectInput (それが directX 入力の意味である場合) は廃止されました。個人的には、メイン ウィンドウの WndProc に送信されたメッセージを処理するには十分だと思います。WMINPUT、またはWMKEYDOWNおよびWMKEYUPを参照してください。
編集: Directx を使用してゲームを作成していると仮定していました。そうでない場合は、入力を選択するためにゲームをどのように作成しているかに大きく依存します。クロスプラットフォームの既存のライブラリを使用している場合、組み込みの入力を処理する方法があります。
DirectInputがキーボード入力に対して行っているのは、スレッドを作成してWM_ *メッセージを監視し、余分なスレッドのオーバーヘッドを追加することだけです。Microsoftでさえ、WM_*メッセージだけをすべきだと言っています。EPIC FAILがいくつか表示されますが、Windowsメッセージキューの一部には表示されません。
それは主に、ゲームに使用する予定のフレームワーク/OS によって異なります。
オプションは多すぎてここにすべてリストすることはできませんが、次のものが含まれます。
- XNA (Windows + XBox 360)
- DirectX (Windows)
- Flash (クロスプラットフォーム)
- Silverlight (クロスプラットフォームである必要があります)
さまざまな統合ゲーム エンジン :
- トルク
- ダーク gdk
- ...
クロスプラットフォーム ライブラリ
- アレグロ
- LWJGL
- ...
率直に言って、入力の処理が最大の問題になる可能性は非常に低いため、ニーズに合ったソリューションを選択し (特にグラフィック機能/複雑さの点で)、そこから入力を処理する方法を選択してください。
通常、ウィンドウ システムに最適な入力処理方法を選択します。GLUT/SDL/SFML またはその他のウィンドウ ツールキットを使用している場合は、それらから入力を取得します。それ以外の場合は、独自に作成している場合は、OS 入力メッセージまたは DirectInput を使用することになります。どちらもゲームで問題なく動作します。
マウス入力について考えている場合は、適用するマウスの弾道が非常に特殊でない限り、DirectInput を使用しないでください。DirectInput のマウス モーションには、ユーザーのマウス バリスティックスが適用されていない (マウス コントロール パネルで設定) ため、ほとんどのユーザーは非常に扱いにくいと感じるでしょう。
DirectInput に問題はありません。うまく機能し、ハードウェアに直接アクセスできます...ええと...「フレンドリーな」インターフェース:) ゲームで真の応答性が必要な場合は、ハードウェアをポーリングすることが唯一の方法です。
Windowsメッセージポンプに依存してWindowsメッセージを処理することは、私見では、EPIC FAILです。