c++ - glfwDestroyWindow 不会关闭窗口

标签 c++ opengl glfw

我有一个在辅助线程中运行 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/

相关文章:

C++ STL 列表大小

c++ - 围绕与原点不同的点旋转

opengl - 从也是渲染目标的纹理中采样

c++ - 旋转 4 圈后物体回到初始位置

c++ - 在上下文初始化之前查询支持的最高 OpenGL 版本?

c++ - 如何确定 catch (...) block 中的当前异常?

c++ - 在 C++ 中获取没有 if-else 的字符串变量

c++ - 从 C++ 中的文件读取结果为空字符串 "sometimes"

gcc - 通过 Windows cgo->gcc->ld 进行 DLL 链接会出现 "undefined-reference-to-(function)"错误

c++ - 为 glm 翻译添加统一 vector 在 OpenGL 中不起作用