2015-07-06 35 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