趣味120%で構成されています。

あほナビあほナビ関係はこちら。 | 古いアプリ公開場はここらへん

XInput

ゴールデンウィークに買ったまま触る機会のなかった
XBOX360 のUSBコントローラ。

WindowsXp に接続することでゲームコントローラーとして使えるんだけども、
この360コントローラー専用のAPIが DirectX9.0 SDK October 2005 より追加された。
それが XInput 。

いままで、DirectX でコントローラーを使おうと思ったら、DirectInput を使って、

  • DirectInputの初期化

  • コントローラの一覧を列挙

  • 列挙中にボタンの数などを確認

  • 使うコントローラーのデバイスIDを記憶

  • ゲームで読み取るたびに、数個の関数を使用

  • コントローラーが外されたりすると、その都度そのコントローラの初期化からやり直し


と、なにかと面倒だった。


んが、この XInput って、初期化は1行。
取得も1行。

つまり2行でデータが全て読み取れる上に、丁寧に認識した順番にIDが0から振られて(現在は最大ID3の4個)、コントローラのLEDもしっかり連動してるし。

あぁ、、、なんか全部360コントローラでいいかなぁ。。とか思ってしまうほど簡単に使えるのがワロスみたいな。
ゲームに関係のないアプリでも対応してしまえるね、これは。。

360PAD
画像は、Windowsで認識したパッドと、360で認識中のパッド。
共にプレイヤー1を示すLED(左上)が光っているのに注目。
(360が2台あるとかいうネタじゃないですw)
また、DirectInput として使用する場合は、LEDは光らない。

あと、XInput を使用しないでいままでの DirectInput で取得すると、デドアラスティックの時に書いたように、アナログL/Rボタンがはやっぱり同時押し認識は出来なかった。
しかし XInput を使うと、360パッドも共に独立したアナログとして認識され、デドアラスティックも同時押しがしっかり認識された。
どうやら XInput は DirectInput の上位ではなく、独立したUSB制御なのかな。

嫌がらせ・・・?
プログラミング | comments (0) | trackbacks (0)
1/1