DirectInput の基礎知識
ここでは、Microsoft® DirectInput® の設定法と単純なアプリケーションでの使用に関する概要について説明する。
このステップの詳細と例については、「DirectInput の使い方」と「DirectInput Visual Basic チュートリアル」を参照すること。
注 : DirectInput を理解するには、以下の用語を理解する必要がある。
- DirectInput オブジェクト : ルートの DirectInput インターフェイス。
- デバイス : キーボード、マウス、ジョイスティック、その他の入力デバイス。
- DirectInputDevice オブジェクト : キーボード、マウス、ジョイスティック、その他の入力デバイスを表すコード。
- デバイス オブジェクト : DirectInput デバイス オブジェクト上のキー、ボタン、トリガなどを表すコード。デバイス オブジェクト インスタンス とも呼ぶ。
以下のステップは、アプリケーションにおいて、どのデバイス オブジェクト (ボタン、軸など) がデータ項目を生成したかを確認するための DirectInput の単純な実装を示している。
- DirectInput オブジェクトを作成する。このオブジェクトのメソッドを使用して、デバイスを列挙し、DirectInput デバイス オブジェクトを作成する。
- デバイスを列挙する。システム マウスまたはキーボードのみを使用する場合は、このステップは必ずしも必要ではない。ユーザーのシステム上でほかにどんな入力デバイスが使用できるかを確認するには、DirectInput にデバイスを列挙させる。DirectInput は、設定基準と一致するデバイスを発見するたびに、その能力をチェックする機会を提供してくれる。また、そのデバイスを表す DirectInput デバイス オブジェクトを作成するための固有の識別子も取得する。
- 使用デバイスごとに DirectInputDevice オブジェクトを作成する。これには、列挙中に取得された固有の識別子が必要となる。システム マウスまたはキーボードについては、標準の GUID を使用できる。
- デバイスを設定する。デバイスごとに、まず協調レベルを設定し、他のアプリケーションやシステムとそのデバイスを共有する方法を指定する。また、データ パケット内で、ボタンや軸などそのデバイス オブジェクトを識別するためのデータ形式を設定する。バッファリング データを取得する場合 (ステートではなくイベントを取得する場合) は、バッファ サイズも設定する必要がある。オプションとして、この段階でデバイスに関する情報を取得し、アプリケーションの動作をそれに応じて調整する。また、ジョイスティックの軸によって返される値の範囲などのプロパテイを設定することもできる。
- デバイスを取得する。この段階で、DirectInput に対し、デバイスからデータを受け取る準備ができたことを通知する。
- データを取得する。一定の間隔で、普通はメッセージ ループまたはレンダリング ループを 1 回繰り返すたびに、各デバイスの現在の状態か前回取得後に発生したイベントの記録のいずれかを取得する。好みに応じて、イベントが発生したら DirectInput から通知させることもできる。
- データを処理する。アプリケーションは、ボタンや軸の状態か、キーが押されているか離されているかなどのイベントのいずれかに反応できる。
- DirectInput を終了する。終了する前に、アプリケーションはすべてのデバイスの取得を解除して解放し、次に DirectInput オブジェクトを解放しなければならない。
DirectInput を実装する方法は、これだけではない。現在使用されている、または将来使用されるバラエティ豊富な入力デバイスを活用するため、またユーザーの環境設定を簡素化するため、アクション マッピングを使用することができる。
デバイスにアクション マッピングを設定することにより、アプリケーションの各アクションに使用するデバイス オブジェクトを、DirectInput に決めさせることができる。たとえばレーシング ゲームで、スロットルが常に y 軸によって制御されるように指定する代わりに、AXIS_THROTTLE というアクションを作成し、デバイス上で最も適切な軸に DirectInput がアクションを割り当てるようにすることができる。イベントを取得したときは、そのイベントを生成したデバイス オブジェクトではなく、そのイベントに関連付けられているアクションによってイベントを識別する。
詳細については、「アクション マッピング」を参照すること。