我正在使用GLFW在機器人項目中記錄遊戲杆的狀態,並且遇到了一些奇怪的事情。爲什麼這個GLFW程序沒有對遊戲杆進行輪詢?
在運行10.11.3的Macbook Air上,GLFW僅在程序開始時返回操縱桿的狀態。但是,文檔聲稱每次調用遊戲杆功能時都會更新狀態。使用遊戲杆和遊戲杆名稱功能僅返回原始狀態。
我無法透露我的代碼。但是,我使用ImGui,其中一個示例程序應該足夠了。若要重現該問題,運行這些變化的「opengl3_example」項目:
行ImGui_ImplGlfwGL3_NewFrame();
後立刻補充一點:
for (int i = 0; i < 15; i++)
{
if (glfwJoystickPresent(i) != GL_TRUE)
{
printf("There are %d joysticks detected.\n",i); break;
}
}
在我的情況下,如果程序不附加任何操縱桿開始,和一個在程序開始運行後插入,它會聲稱還會有0個操縱桿連接。問題超出該功能,因爲按鈕和軸狀態不會更新。
我使用最新的GLFW 3.1.2,從源代碼編譯。請告訴我這個。
編輯:如果你想知道應該發生什麼,看看視頻https://www.youtube.com/watch?v=mx0IUbxAQ34在2:09時間戳。
編輯:我試過了一個不同的庫,它檢測到正確的遊戲杆。
在此先感謝。
如果在執行程序之前連接棒,軸和按鈕狀態是否正確更新? –
軸狀態無法正確更新,事實上,至少對於GLFW檢測到的第一個操縱桿而言。它顯示了陣列中的四個軸,均包含浮點數138690176035340265469942380959367168.000000或類似的東西,總是以1386開始。其他操縱桿的所有其他軸都是0.在編程期間,值永遠不會更改或更新。 –
「遊戲杆」測試是否有同樣的問題? – elmindreda