我有一个在辅助线程中运行 OpenGL 的程序。如果渲染循环完成,我调用 glfwDestroyWindow()。但是,在我退出 main thead 之前窗口不会关闭。如果我多次尝试关闭它(通过反复单击 x),会弹出一个窗口,提示窗口没有响应并要求我强制退出。
为什么 glfwDestroyWindow没有正确关闭我的窗口?
编辑:顺便说一下,我正在使用 GLFW3。
编辑2:
基本上,这就是我的代码的样子。当窗口仍然打开时,我可以看到输出。只有在我强行关闭它或退出主线程时,窗 Eloquent 会关闭。
主线程:
int main() {
startOpenGLThread();
while(1);
}
OpenGL线程:
Window::start() {
initGLFW();
while(!glfwWindowShouldClose());
glfwDestroyWindow();
cout << "I can see this ouput, but the window is still open!" << endl;
}
编辑3:
显然,如果我将 glfwTerminate() 放在输出的后面,窗口就会关闭。然而,这不是我想要的,因为我可能打开了其他窗口。
最佳答案
您需要调用glfwPollEvents()
或glfwWaitEvents()
来处理关闭按钮事件。将一个 glfwWaitEvents();
插入到您的循环中,窗口应该正确关闭。
关于c++ - glfwDestroyWindow 不会关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312630/