gpt4 book ai didi

c++ - GLFW getkey 'esc' 并关闭窗口

转载 作者:行者123 更新时间:2023-11-28 01:49:37 25 4
gpt4 key购买 nike

我正在尝试获取“esc”键输入并关闭窗口。我找到了两种方法,第一种是:

static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods){
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
}

glfwSetKeyCallback(window, key_callback);

while(!glfwWindowShouldClose(window)){
render();
}

另一个是:

    glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);

while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
glfwWindowShouldClose(window) == 0 ){
render();
}

我想知道这两种方式是否一样?如果有任何情况,这两者的工作方式会有所不同。

最佳答案

您可以说它们的工作方式有点相同,但请相信 glfwSetKeyCallback回调。

当您调用 glfwPollEvents 时然后它接受所有未决事件并相应地调用每个相应的回调。问题是 glfwGetKey只返回指定键的最后状态。

如果您(按时间顺序)有这样的事件流,这就会成为一个问题:

*Press Escape*
*Release Escape*
glfwPollEvents() <- Calls the callback two times
glfwGetKey(window, GLFW_KEY_ESCAPE) <- returns GLFW_RELEASE

按键回调将在按下和释放时调用。然而glfwGetKey将返回 GLFW_RELEASE,因为这是转义键的最后状态。

那么他们会采取同样的行动吗?可能吧。你能相信情况总是如此吗?没有。

关于c++ - GLFW getkey 'esc' 并关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com