[英]glfwDestroyWindow won't close window
我有一个在辅助线程中运行的 OpenGL 程序。 如果渲染循环完成,我调用 glfwDestroyWindow()。 但是,在我退出主标题之前,窗口不会关闭。 如果我尝试多次关闭它(通过反复单击 x),会弹出一个窗口,提示该窗口没有响应并要求我强制退出。
为什么glfwDestroyWindow<\/a>不能正确关闭我的窗口?
编辑:顺便说一句,我正在使用 GLFW3。
编辑2:
基本上,这就是我的代码的样子。 当窗口仍然打开时,我可以看到输出。 只有当我强制关闭它或退出主线程时,窗口才会关闭。
int main() {
startOpenGLThread();
while(1);
}
您需要调用glfwPollEvents()
或glfwWaitEvents()
来处理关闭按钮事件。 插入一个glfwWaitEvents();
进入循环,窗口应正确关闭。
您可能在主循环内部调用glfwDestroyWindow()。 基本的GLFW应用程序应如下所示
GLFWwindow * win = glfwCreateWindow(...)
while (!glfwWindowShouldClose(win)) {
... process input ...
glfwMakeContextCurrnet(win);
... do rendering stuff ...
glfwSwapBuffers(win);
}
glfwDestroyWindow(win);
为了关闭该应用程序,大概有一些输入将被您解释为关闭命令。 如果有人按下“ ESC”,则可以在GLFW密钥回调处理程序中进行选择。 但是,当收到该信号时,您不应调用glfwDestroyWindow()
。 相反,您应该调用glfwSetWindowShouldClose(win, 1)
告诉GLFW它可以退出主循环并在主线程中安全地销毁窗口。
\/\/可以这样尝试先关闭窗口
glfwSetWindowShouldClose(win, true); glfwDestroyWindow(赢);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.