关于GLFW的问题 我有一个程序,其中有 OpenGL 窗口和 Vulkan 窗口。 创建 Vulkan 窗口时我设置了
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
当我创建 OpenGL 时
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
我的问题是在创建 Vulkan 窗口后我无法创建任何其他新窗口。如果我调用 glfwCreateWindow 它不起作用。
Glfw Error 65546: The specified window has no context
(我在使用 ImGUI 和多个视口(viewport)时发现这是一个问题。从主窗口拖出时会创建新窗口)
Windows 上的创建是在不同的线程上。 其中一个如何影响其他,以及如何恢复功能以恢复 OpenGL 上下文。这样我就可以创建更多窗口? 我在这里缺少一些东西。 谢谢。
最佳答案
在创建 OpenGL 窗口之前,您必须通过以下方式再次将客户端 API 设置为 OpenGL:
glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API);
这样 GLFW 也会创建一个 OpenGL 上下文(而不仅仅是窗口)。
此设置的默认为GLFW_OPENGL_API
,但是当您通过glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API)显式禁用为Vulkan创建OpenGL上下文时;
您必须为 OpenGL 窗口重新启用 OpenGL 上下文创建。
参见:https://www.glfw.org/docs/3.3/window_guide.html#GLFW_CLIENT_API_hint
关于GLFW 多窗口多线程 OpenGL 和 Vulkan 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73880258/