我對SlimDX有一個好奇的問題:我們已經在Windows 7上看到了這一點,並且尚未測試其他版本:我正在使用一捆廉價USB遊戲手柄(無序列號),有時一個物理遊戲手柄最終將輸入提供給多個對象。SlimDX:Joystick.Poll()成功斷開遊戲手柄
的方案是:
- 插件在手柄1至轂插槽1墊出現在
DirectInput.GetDevices
作爲GUID f17b2d30。爲pad創建Joystick
對象。 - 將遊戲手柄2插入到集線器插槽2中。手柄將作爲GUID 5187d2d0出現在
DirectInput.GetDevices
中。爲pad創建Joystick
對象。 - 按下游戲手柄2上的按鈕。沒有改變狀態。
- 按下游戲手柄1上的按鈕。在兩個對象上的
Poll()
之後,按鈕出現在GetCurrentState()
中。 - 拔下手柄2.
Poll()
對其方法繼續無誤地返回,但不再出現在DirectInput.GetDevices
中。 - 按下游戲手柄1上的按鈕。在兩個對象上的
Poll()
之後,按鈕出現在GetCurrentState()
中。
我已經檢查了調試器中的對象。每個Joystick
引用Information.InstanceGUID
的正確GUID,但每個在Properties.InterfacePath
中都有相同的USB路徑。
遊戲手柄硬件似乎工作正常 - 如果我使用控制面板遊戲杆測試儀執行相同的操作,遊戲手柄保持不同。
DirectInput GUID似乎是基於USB PID和VID分配的,然後是插入相同遊戲手柄的順序,而不是它們插入的USB端口的物理路徑。如果我混合使用不同型號的遊戲手柄,問題就會消失。
感覺就像一個SlimDX甚至是一個DirectInput錯誤 - 是否有解決方法?
好了,你會與他人共享您的實現? –
@ d.popov編輯添加鏈接到源代碼。 –
謝謝!你能分享Adapters.dll嗎? –