GLFW 获取密钥"esc"并关闭窗口
GLFW getkey 'esc' and close window
我正在尝试获取'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
,因为这是逃生密钥的最后一个状态。
那么他们会采取同样的行动吗?可能。您能一直依靠这种情况吗?否。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- GLFW 获取密钥"esc"并关闭窗口