XInput
ゴールデンウィークに買ったまま触る機会のなかった
XBOX360 のUSBコントローラ。
WindowsXp に接続することでゲームコントローラーとして使えるんだけども、
この360コントローラー専用のAPIが DirectX9.0 SDK October 2005 より追加された。
それが XInput 。
いままで、DirectX でコントローラーを使おうと思ったら、DirectInput を使って、
と、なにかと面倒だった。
んが、この XInput って、初期化は1行。
取得も1行。
つまり2行でデータが全て読み取れる上に、丁寧に認識した順番にIDが0から振られて(現在は最大ID3の4個)、コントローラのLEDもしっかり連動してるし。
あぁ、、、なんか全部360コントローラでいいかなぁ。。とか思ってしまうほど簡単に使えるのがワロスみたいな。
ゲームに関係のないアプリでも対応してしまえるね、これは。。
画像は、Windowsで認識したパッドと、360で認識中のパッド。
共にプレイヤー1を示すLED(左上)が光っているのに注目。
(360が2台あるとかいうネタじゃないですw)
また、DirectInput として使用する場合は、LEDは光らない。
あと、XInput を使用しないでいままでの DirectInput で取得すると、デドアラスティックの時に書いたように、アナログL/Rボタンがはやっぱり同時押し認識は出来なかった。
しかし XInput を使うと、360パッドも共に独立したアナログとして認識され、デドアラスティックも同時押しがしっかり認識された。
どうやら XInput は DirectInput の上位ではなく、独立したUSB制御なのかな。
嫌がらせ・・・?
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コントローラでいいかなぁ。。とか思ってしまうほど簡単に使えるのがワロスみたいな。
ゲームに関係のないアプリでも対応してしまえるね、これは。。
画像は、Windowsで認識したパッドと、360で認識中のパッド。
共にプレイヤー1を示すLED(左上)が光っているのに注目。
(360が2台あるとかいうネタじゃないですw)
また、DirectInput として使用する場合は、LEDは光らない。
あと、XInput を使用しないでいままでの DirectInput で取得すると、デドアラスティックの時に書いたように、アナログL/Rボタンがはやっぱり同時押し認識は出来なかった。
しかし XInput を使うと、360パッドも共に独立したアナログとして認識され、デドアラスティックも同時押しがしっかり認識された。
どうやら XInput は DirectInput の上位ではなく、独立したUSB制御なのかな。
嫌がらせ・・・?