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);
函数,你可以轮询每一帧。
我正在尝试对我的应用程序实施一些按键输入。例如移动我的相机。我用 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);
函数,你可以轮询每一帧。