繁体   English   中英

glfwDestroyWindow 不会关闭窗口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM