DirectInputとは? わかりやすく解説

DirectInput

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/05/26 17:39 UTC 版)

DirectInputマイクロソフトによって開発されたソフトウェアコンポーネント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]のサポートが追加され、WM_INPUT[2]というウィンドウメッセージが追加されたが、DirectInputはWM_INPUTのデータを読み取る2つ目のスレッドを内部的に作成するため、DirectInput APIを使用することによって、単にWM_INPUTを直接読み取る場合よりもオーバーヘッドが増加してしまうからである[3][4]。マウスまたはキーボードのデバイスからデータを読み取る場合は、DirectInputを使用する利点はない。高解像度マウスの移動データが必要ない場合はWM_MOUSEMOVEを、高精度の制御が必要なFPSゲームでのエイミング操作のようにパフォーマンス最適化の観点から高解像度マウスのサポートが求められる場合はWM_INPUTを用いることが推奨されている。

XInput

XInputは「次世代」コントローラーのための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 の左右のトリガーの組み合わせは、意図的なもの[7]です。ゲームでは、DirectInput デバイスとユーザーとの対話操作がない場合、このデバイスの軸は常に中央に配置されると想定しています。ただし、トリガーが保持されない場合、Xbox 360 コントローラーは中心ではなく最小値を登録するように設計されていました。したがって、以前のゲームはユーザーの対話操作を想定しています。 この解決策とは、トリガーを組み合わせて、あるトリガーを正の方向に設定し、もう 1 つのトリガーを負の方向に設定するというものでした。それによって、DirectInput に"制御"が中央にあることをユーザーの対話操作で示すことがなくなります。

これはしかしながら、デュアルアナログスティックのあるゲームパッドやハンドルコントローラーなどのような様々なDirectInputコントローラーが既にトリガーやペダルに個々に割り当て済みであるという事実を無視していた。しかも多くのDirectInputデバイスには振動機能も搭載されていた。Xbox 360用コントローラーで振動機能をサポートし、デッドゾーンの検知や、(オプションとして)独立したトリガーをDirectInput経由で利用できる、XBCDというドライバが存在している。これはDirectInputとXInputのAPIの違いによるものというよりはむしろ、マイクロソフトが提供するXbox 360用コントローラーのドライバは「意図的に」DirectInputでの機能を制限していることを示している。

現在XInputのAPIはDirectInputにはない制約もある。

  • 次世代のコントローラーのみをサポートする。基本的にWindows用のドライバがあるXbox 360用のコントローラーに制限される。旧式のWindows用のコントローラーはサポートしていない。
  • 最大同時接続数4台。これはXboxからWindowsに持ち込まれた制約である。今のところ4つのコントローラーを必要とするPC用ゲームはまずないが、DirectInputにはこのような制限が無く、不合理な制限と考えられる。
  • キーボード、マウス及びマウス型デバイスの非サポート。DirectInputはこれらのデバイスに対しては推奨されないものとするマイクロソフトの意向を反映しているが、DirectInputでこれらのデバイスを利用すること自体は可能である。
  • 1コントローラーあたり、アナログ4軸、10ボタン、デジタル8方向のみをサポートする。XInputがサポートする軸とボタンの数はXbox 360用コントローラーと直接対応しているためである。対してDirectInputはアナログ8軸、128ボタン、フルレンジのPOV (ハットスイッチ) をサポートする。

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]

脚注

関連項目

Microsoft DirectX


DirectInput

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/07 20:30 UTC 版)

Windows API」の記事における「DirectInput」の解説

ジョイパッドゲームパッドからの入力、およびフォースフィードバックを扱う。

※この「DirectInput」の解説は、「Windows API」の解説の一部です。
「DirectInput」を含む「Windows API」の記事については、「Windows API」の概要を参照ください。

ウィキペディア小見出し辞書の「DirectInput」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「DirectInput」の関連用語

DirectInputのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DirectInputのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのDirectInput (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのWindows API (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS