2013-02-06 73 views
0

我已經設置了GLFW庫,並根據它的用戶指南,我應該使用glfwInit()函數來初始化它。之後,我應該可以 - 例如 - 在按下鍵盤上的鍵後調用回調函數,但是這個函數沒有被調用,所以我嘗試了一些更簡單的方法 - 獲取鼠標位置。但它也行不通,所以我認爲我的整個GLFW有些問題。即使glfwInit()返回1也不能獲得GLFW的工作

這是我的應用程序的主循環:

while (!m_exit) 
{ 

    int x, y; 
    glfwGetMousePos(&x, &y); 
    glfwPollEvents(); 
    gameCycle();      // Do one cycle 

    while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) 
    { 
     // Check the pressence of commands 
     if (!GetMessage (&msg, NULL, 0, 0)) 
     { 
      return msg.wParam; // Hand the control on to system 
     } 

     TranslateMessage (&msg); 
     DispatchMessage (&msg); 
    } 
} 

而且這個循環之前,我初始化我GLFW

// Initialize GLFW 
if(!glfwInit()) 
{ 
    exit(EXIT_FAILURE); 
} 

glfwSetKeyCallback(processKeys); 

// Main message loop: 
int loopRet = g_pGameAppLayer->mainLoop(); 

當我檢查中保存的xy變量的值,我只能得到-858993460這表明沒有值傳遞給它們。

那麼我在設置GLFW了嗎?

+0

如果您使用的是GLFW,爲什麼要明確抽取Win32消息? – rioki

+0

@rioki因爲我不知道我不應該這樣做。 –

回答

6

你的問題是在這裏:

之後,我應該能夠 - 例如 - 調用回調函數後,我按我的鍵盤

沒有重點,你不應該。在GLFW創建窗口之前,您無法獲得輸入。對於許多開窗系統來說這通常是真實的;如果你有一個窗口,你只能得到輸入。

+0

謝謝Nicol,我以爲我可能只能使用GLFW進行句柄輸入,因爲我已經創建了不使用GLFW的窗口。 –

相關問題