2016-03-08 62 views
0

我正在使用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時間戳。

編輯:我試過了一個不同的庫,它檢測到正確的遊戲杆。

在此先感謝。

+0

如果在執行程序之前連接棒,軸和按鈕狀態是否正確更新? –

+0

軸狀態無法正確更新,事實上,至少對於GLFW檢測到的第一個操縱桿而言。它顯示了陣列中的四個軸,均包含浮點數138690176035340265469942380959367168.000000或類似的東西,總是以1386開始。其他操縱桿的所有其他軸都是0.在編程期間,值永遠不會更改或更新。 –

+1

「遊戲杆」測試是否有同樣的問題? – elmindreda

回答

0

事實證明,自制軟件上的GLFW版本被竊聽。什麼是反頂。

由於某些原因,當我從源代碼安裝時,它沒有覆蓋自制軟件的安裝二進制文件。這導致我認爲這是代碼問題。

不是。