我正在尝试从QQuickView窗口获取OpenGL上下文(HGLRC)。 我需要将它传递给非Qt库。我可以轻松地获得QOpenGLContext:
m_qtContext = QOpenGLContext::currentContext();
如何从Qt类获取OpenGL上下文? (QOpenGLContext)
答案 0 :(得分:3)
据我所知,目前还没有完全公开的API。请注意,Qt 5从API中删除了大多数本机句柄。这应该可以解决问题:
QPlatformNativeInterface *iface = QGuiApplication::platformNativeInterface();
HGLRC ctx = (HGLRC)iface->nativeResourceForContext("renderingContext", context);
(不确定最后一次演员,但看起来是正确的according to the relevant source)。
答案 1 :(得分:1)
如果在线程具有上下文绑定时调用wglGetCurrentContext (...)
,则可以在 任何 框架中从WGL获取当前的OpenGL上下文。请记住,框架通常会在调用窗口的绘制回调/事件处理程序时更改当前上下文,甚至可能在完成回调后将其设置为NULL
。
WGL对上下文和线程有一个严格的一对一映射,因此在渲染到多个窗口的单线程应用程序中,您可能必须在窗口的绘制回调/事件处理程序中调用此函数才能获得正确的处理
简单来说,只要您拥有在Win32下发布GL命令的有效上下文,就可以通过调用wglGetCurrentContext (...)
来获取特定上下文的句柄。
如果您的框架具有获取本机句柄的可移植方式,那么一定要使用它。但这绝对不是您在Microsoft Windows上的唯一选择。