Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectInput C/C++ チュートリアル」を参照すること。
この時点で、必要なプロパティは設定されており、デバイスは取得可能で、データはジョイスティックから収集可能である。Joystick サンプルでは、プロパティを設定した後のループ内でデバイスをポーリングしている。実際のマルチメディア アプリケーションでは、ポーリングはメインのゲーム ループやレンダリング ループ内で行われる。
diDev.Acquire While DoEvents diDev.Poll Wend
サンプル アプリケーションは、実際にデバイスをポーリングするたびに直接データを取得しているわけではない。不要な画面更新をなくすために、ポーリングは通知に基づいて行われる。割り込みを生成しないデバイスにより通知が発行されていることを保証する唯一の方法は、Poll を呼び出すことである。ゲーム デバイス (HID など) によってはポーリングは必要ではないが、DirectInputDevice.Poll を余分に呼び出すことは、Poll を呼び出す前にデバイスのフラグをチェックするのと同様に効率的である。
通知は DirectXEvent.DXCallback メソッドの実装内で通常どおり処理される。このプロシージャが呼び出されるたびに、アプリケーションは何らかのジョイスティック イベントが発生したことを認識する。この時点で、DirectInputDevice.GetDeviceData を呼び出して、待機中の軸の変化やボタン イベントを取得することもできる。ただし、ゲーム コントローラでは、デバイス全体の状態を取得することが普通なので、サンプルでは DirectInputDevice.GetDeviceStateJoystick を使用している。
Dim js As DIJOYSTATE diDev.GetDeviceStateJoystick js
ここで、DIJOYSTATE 型の値は、デバイス オブジェクトの状態に関してアプリケーションが知る必要のあるすべての情報を示している。アプリケーションは「ステップ 2 : ジョイスティック能力の取得」で、どのボタン、軸、視点コントローラが実際に存在するかがわかっているので、型のどのメンバを無視するかも認識している。