如何从CGLContextObj创建QGLWidget?

时间:2013-05-18 22:28:52

标签: macos qt opengl qt4 core-graphics

我在Mac OS 10.8上使用Qt 4.8.4。

我已经有CGLContextObj(在我无法控制的情况下创建)。

我想从我现有的QGLWidget创建一个CGLContextObj - 或者至少与我共享{ - 1}},这样我就可以渲染在CGLContextObj上创建的纹理。

如何从现有QGLContext创建CGLContextObj


已经尝试

  • 我找到了QGLContext::fromPlatformGLContext(),但是这个方法似乎只有在Qt模式下构建Qt时才可用(...但是./configure -qpa cocoa无法构建,我还没有能够找到关于-qpa标志的确切内容的任何文档。

1 个答案:

答案 0 :(得分:4)

QPA (Qt Platform Abstraction)在Qt 4中仍在进行中。它是fully integrated into Qt 5。如果您可以选择升级到Qt 5,那么事情可能会更容易。

在Qt 5中,您可以构建一个QCocoaGLContextQPlatformOpenGLContext的派生类),然后从中获得QOpenGLContextQPlatformOpenGLContext::context()),并从中获取一个QGLContextQGLContext::fromOpenGLContext(QOpenGLContext *))。这会让你非常接近,但是如何从CGLContextObj变为QCocoaGLContext

很遗憾,我没有看到从QCocoaGLContext构建CGLContextObj的选项。它有一个NSOpenGLContext私有数据成员,它在现有构造函数中初始化,所以也许你可以添加另一个构造函数。