SlimDXで奇妙な問題が発生しました:これはWindows 7で確認されており、他のバージョンはまだテストされていません:安価なUSBゲームパッド(シリアル番号なし)のバンドルを使用していますが、1つの物理的なゲームパッドが終了することがあります複数のJoystick
オブジェクトに入力を提供します。
シナリオは次のとおりです。
- ゲームパッド1をハブスロット1に接続します。パッドは
DirectInput.GetDevices
GUIDf17b2d30として表示されます。Joystick
パッドのオブジェクトを作成します。 - ゲームパッド2をハブスロット2に接続します。パッドは
DirectInput.GetDevices
GUID5187d2d0として表示されます。Joystick
パッドのオブジェクトを作成します。 - ゲームパッド2のボタンを押します。状態に変更はありません。
- ゲームパッド1のボタンを押します。ボタンは両方のオブジェクトの
GetCurrentState()
後に設定されて表示されます。Poll()
- オブジェクトのゲームパッド2.
Poll()
メソッドのプラグを抜くと、エラーなしで戻り続けますが、に表示されなくなりますDirectInput.GetDevices
。 - ゲームパッド1のボタンを押します。ボタンは両方のオブジェクトの
GetCurrentState()
後に設定されて表示されます。Poll()
デバッガーでオブジェクトを調べました。それぞれJoystick
が正しいGUIDを参照しますInformation.InstanceGUID
が、それぞれがで同じUSBパスを持っていますProperties.InterfacePath
。
ゲームパッドのハードウェアは正しく機能しているようです-コントロールパネルのジョイスティックテスターで同じシーケンスを実行すると、ゲームパッドは区別されたままになります。
DirectInput GUIDは、USB PIDとVIDに基づいて割り当てられているようです。次に、接続されているUSBポートへの物理パスではなく、同じゲームパッドが接続されている順序です。異なるモデルのゲームパッドを組み合わせると、問題は解決します。
SlimDXまたはDirectInputのバグのように感じます-これに対する回避策はありますか?