DirectInput
DirectInputはDirectX 8から大きな変更が無く、XInputは後のDirectX 9で導入され、2つのAPIの現状と将来には若干の混乱がある。現在はお互いにない特徴があり、そしていずれもDirectX 10で大きな変更はない。
Xbox 360用コントローラーとマイクロソフトのデフォルトのWindowsドライバの組み合わせにおいてDirectInputを使う場合、XInputと比較して以下の制約がある。
左右のトリガーは単一のデジタルな方向として動作し、独立したアナログの軸としては動作しない。
振動機能は利用できない。
ヘッドセットデバイスの確認ができない。
MSDNによると、以下のような説明および解決策が記載されている。
これはしかしながら、デュアルアナログスティックのあるゲームパッドやハンドルコントローラーなどのような様々な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でこれらのデバイスを利用すること自体は可能である。