OpenGL 键盘输入

OpenGL keyboard input

我正在尝试对我的应用程序实施一些按键输入。例如移动我的相机。我用 lwjgl。所以我尝试了这个:

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));

                    }   
                }

由于无限循环导致我的应用程序崩溃。

也许有人可以帮我解决这个问题。

我对 GLFW 不是特别熟悉,但发现 GLFW_REPEAT 这可能就是您要找的东西(至少可以说缺少它的文档)。

如果这不起作用,则使用影子寄存器进行键盘输入并不少见,您可以在其中更新每个感兴趣的键的状态,只要它们出现。然后你可以为自己提供一个 bool keyIsDown(keytype_t key); 函数,你可以轮询每一帧。