void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_SPACE && action == GLFW_PRESS)
show = !show;
}
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if(action == GLFW_RELEASE) return; //only handle press events
if(key == GLFW_KEY_SPACE) show = !show;
}
//in main or init
glfwSetKeyCallback(window, key_callback);
3条答案
按热度按时间ylamdve61#
是的。
glfwGetKey
用于连续按键输入。GLFW手册列出了glfwSetKeyCallback
作为一个更好的替代品,如果你想一次性通知按键。因此,对于您的情况,它会是这样的:
字符集
如果您出于某种原因不想使用此方法,您可以自己实现类似的东西。您需要一个布尔值(或值数组)来表示键状态。然后,在你的输入处理中,你必须只对按钮状态的 * 改变 * 做出React,就像这样:
型
xmakbtuz2#
我再次推荐使用GLFW键回调,而不是每帧都自己获取键状态。这样,每个键只会收到一次按键和一次按键释放事件。
字符集
bqf10yzr3#
我有点晚了这个问题,但我也有麻烦实现一个关键切换像你一样。下面是我在不使用key_callback的情况下修复它的方法(在脑海中编写w.r.t代码):
在yourClass.h文件中:
字符集
在yourClass.cpp文件中:
型