DirectInputDirectInputはマイクロソフトによって開発されたソフトウェアコンポーネント「Microsoft DirectX」のうちのひとつであり、マウス、キーボード、ジョイスティック、ゲームコントローラ等を介してユーザーからの入力情報を収集するためのAPIである。DirectInputはまたゲーム中の入力機器のボタンや座標を特定のアクションに割り当てる「アクションマッピング」のシステムを提供する。さらに「フォースフィードバック」デバイスの入出力を扱う。 マイクロソフトはDirectX 9でXbox 360用コントローラーのためのXInputという新しい入力ライブラリを導入した。 DirectInputとXInputは通常のWin32アプリケーションにも利点がある。
DirectInputはDirectXライブラリの一部であるが、DirectX 8から大きな変更がない。2005年のMeltdownでのプレゼンテーション[1][リンク切れ]でマイクロソフトは、新しいアプリケーションはキーボードとマウスを制御するのにDirectInputではなくWindowsのメッセージループを活用して、Xbox 360のコントローラーでもDirectInputではなくXInputを使うように推奨した。 歴史DirectInputはDirectXの一部であった。当初は実際はジョイスティックだけをサポートしており、マウスとキーボードの部分は標準Win32 APIの単なるラッパーであった。DirectXバージョン3.0よりキーボードとマウスがサポートされるようになり、ジョイスティックのサポートも改善した。DirectX 5.0ではジョイスティックのサポートを大幅に強化し、フォースフィードバックに対応し、ボタン数が増え、基盤となるデバイスドライバモデルが変更された。マウスでもボタン数が4から8に増えた。DirectX 7.0では長い間待望だった複数のマウスの接続が可能になり、ジョイスティックのように個別に操作できるようになったが、後にリリースされたWindows XPではこの機能が動作しなくなった(Windows 98/MEとDirectX 9の組み合わせでは引き続き動作していた)。DirectX 8.0はアクションマッピングや様々な異なる種類の装置を広くサポートする最後のメジャーバージョンアップとなった。 マイクロソフトは元々DirectInputを全ての入力機器を取り扱う方法として売り込んだが、のちにこの方針は撤回された。以後、マイクロソフトはDirectInputを使ってキーボードとマウスを制御することを推奨しておらず、Xbox 360コントローラーの利用にも新しいXInputを推奨している。というのも、Windows XPではRaw Input API[1]のサポートが追加され、 XInputXInputは「次世代」コントローラーのためのAPIであり、Xbox 360の発売と共に導入され、Xbox 360コントローラーの全ての機能がWindows XP SP1以上で利用できるようになった。XInputはDirectInputよりもプログラムが劇的に簡単になる利点がある。XInputはDirectX 9以上から利用できる。 DirectInputとXInputの比較DirectInputはDirectX 8から大きな変更が無く、XInputは後のDirectX 9で導入され、2つのAPIの現状と将来には若干の混乱がある。現在はお互いにない特徴があり、そしていずれもDirectX 10で大きな変更はない。 Xbox 360用コントローラーとマイクロソフトのデフォルトのWindowsドライバの組み合わせにおいてDirectInputを使う場合、XInputと比較して以下の制約がある。
MSDNによると、以下のような説明および解決策が記載されている[5][6]。
これはしかしながら、デュアルアナログスティックのあるゲームパッドやハンドルコントローラーなどのような様々なDirectInputコントローラーが既にトリガーやペダルに個々に割り当て済みであるという事実を無視していた。しかも多くのDirectInputデバイスには振動機能も搭載されていた。Xbox 360用コントローラーで振動機能をサポートし、デッドゾーンの検知や、(オプションとして)独立したトリガーをDirectInput経由で利用できる、XBCDというドライバが存在している。これはDirectInputとXInputのAPIの違いによるものというよりはむしろ、マイクロソフトが提供するXbox 360用コントローラーのドライバは「意図的に」DirectInputでの機能を制限していることを示している。 現在XInputのAPIはDirectInputにはない制約もある。
DirectInputは従来から存在する規格のため、対応するドライバーが用意されているデバイスも豊富だが、XInputは後発のため、主要な対応デバイスとしてはXbox 360用の純正コントローラーおよびXbox One用の純正コントローラー[8]のみである。ただし、サードパーティー製の各種コントローラーもDirectInput/XInput両対応の製品がいくつか発売されている[9] [10]。 Windows 8で導入されたWindowsストアアプリでは、XInput 1.4のみが使用可能であり、デスクトップアプリ向けのXInput (1.1/1.2/1.3, 9.1.0) およびDirectInputは使用できない[11]。XInput 1.4ではオーディオヘッドセットの問い合わせ機能が追加されている[12]。 継続使用の試み2022年現在、DirectInputは過去の技術とみなされているが、コミュニティベースでの試みとして、フライトシミュレーターをForce feedback API対応ジョイスティックで使用可能にする、XPForce プロジェクトが存在する[13]。 脚注
関連項目 |