我正在尝试从QQuickView窗口获取OpenGL上下文(HGLRC)。我需要将它传递给非Qt库。我可以很容易地得到一个QOpenGLContext:
m_qtContext = QOpenGLContext::currentContext();如何从Qt类获取OpenGL上下文?(QOpenGLContext)
发布于 2013-09-13 03:17:33
据我所知,目前还没有针对此的公共API。请注意,Qt5从API中删除了大部分本机句柄。这应该能起到作用:
QPlatformNativeInterface *iface = QGuiApplication::platformNativeInterface();
HGLRC ctx = (HGLRC)iface->nativeResourceForContext("renderingContext", context);(不确定最后的强制转换,但看起来是正确的according to the relevant source)。
发布于 2013-09-13 05:33:15
如果在线程绑定上下文时调用wglGetCurrentContext (...),则可以从any框架中的WGL获取当前的OpenGL上下文。请记住,每当框架调用窗口的绘制回调/事件处理程序时,它们通常都会更改当前上下文,甚至可能在完成回调后将其设置为NULL。
WGL对上下文和线程有严格的一对一映射,因此在呈现到多个窗口的单线程应用程序中,您可能必须在窗口的绘图回调/事件处理程序中调用此函数才能获得适当的句柄。
最简单地说,只要您有一个在Win32下发出GL命令的有效上下文,就可以通过调用wglGetCurrentContext (...)获得该特定上下文的句柄。
如果您的框架有一种获取本机句柄的可移植方法,那么一定要使用它。但这绝对不是你在Microsoft Windows上的唯一选择。
https://stackoverflow.com/questions/18769438
复制相似问题