我在Mac OS 10.8上使用Qt 4.8.4。
我已经有CGLContextObj
(在我无法控制的情况下创建)。
我想从我现有的QGLWidget
创建一个CGLContextObj
- 或者至少与我共享{ - 1}},这样我就可以渲染在CGLContextObj
上创建的纹理。
如何从现有QGLContext
创建CGLContextObj
?
QGLContext::fromPlatformGLContext()
,但是这个方法似乎只有在Qt模式下构建Qt时才可用(...但是./configure -qpa cocoa
无法构建,我还没有能够找到关于-qpa
标志的确切内容的任何文档。答案 0 :(得分:4)
QPA (Qt Platform Abstraction)在Qt 4中仍在进行中。它是fully integrated into Qt 5。如果您可以选择升级到Qt 5,那么事情可能会更容易。
在Qt 5中,您可以构建一个QCocoaGLContext
(QPlatformOpenGLContext
的派生类),然后从中获得QOpenGLContext
(QPlatformOpenGLContext::context()
),并从中获取一个QGLContext
(QGLContext::fromOpenGLContext(QOpenGLContext *)
)。这会让你非常接近,但是如何从CGLContextObj
变为QCocoaGLContext
?
很遗憾,我没有看到从QCocoaGLContext
构建CGLContextObj
的选项。它有一个NSOpenGLContext
私有数据成员,它在现有构造函数中初始化,所以也许你可以添加另一个构造函数。