2015-07-06 34 views
0

我'想實現一些關鍵的輸入對我的申請。例如移動我的相機。我使用lwjgl。所以我試過這個:OpenGL的鍵盤輸入

if(key == GLFW_KEY_A && action == GLFW_PRESS){ 
        camera.translate(new Vector3f(+0.5f,0,-0.5f)); 
       } 

現在的問題是,這是隻執行一次,這意味着我不能移動我的相機通過按住此鍵。

所以我想是這樣的:

if(key == GLFW_KEY_D && action == GLFW_PRESS){ 

        while(action != GLFW_RELEASE){ 
         a.getView().translate(new Vector3f(-0.5f,0,+0.5f)); 

        } 
       } 

出故障,因爲一個無限循環的我的應用程序。

馬貝有人可以幫我了這一點。

回答

0

我不熟悉GLFW尤其但發現GLFW_REPEAT這可能是你在找什麼(是缺乏的,至少可以說,它的文檔)。

如果不工作的情況並不罕見使用影子寄存器的鍵盤輸入,讓您無論什麼時候出現更新感興趣的每個鍵的狀態。然後,您可以爲自己提供一個bool keyIsDown(keytype_t key);函數,您可以輪詢每個幀。

+0

似乎'INT glfwGetKey(GLFWwindow *窗口,INT鍵);'可能感興趣了。 – JBarberU

+0

對我來說,這並不工作,還是謝謝你的答案 – greedsin

+0

它工作時,我保存的我的keyborad輸入的狀態在布爾數組,THX爲理念 – greedsin