【发布时间】:2015-08-26 11:17:19
【问题描述】:
我需要在两个 OpenGL 上下文之间共享纹理数据,一个是核心配置文件(当前 10.10 OS X 上的 4.1 版),另一个是旧版(2.1 版)。旧版配置文件由第三方库创建。
Apple documentation 表示要在上下文之间共享资源,它们必须是相似的(例如,相同的配置文件)。
并非每个上下文都可以与其他所有上下文共享。两个上下文必须共享相同的 OpenGL 配置文件。
还有其他方法可以避免内存传输吗?
(目前可行的解决方案是先将纹理下载到 CPU,然后在第二个上下文中重新上传到 GPU,这还可以,但速度很慢......)
【问题讨论】:
-
您是否尝试与不同的个人资料共享 2 个上下文?先尝试一下。也许它会起作用。
-
OS X 没有兼容性配置文件,顺便说一下。你有一个核心配置文件(3.2+),然后是一个遗留上下文(2.1)。迂腐,我知道,但如果它具有兼容性配置文件,您将可以同时访问 3.0+ 功能和已弃用的东西。
-
Michael > 在上下文创建过程中出现 kCGLBadMatch 错误(使用 CGLCreateContext)
-
Andon > 谢谢,我修好了
-
您也许可以使用 IOSurface 机制在上下文之间共享图像。不确定它是否会起作用,但您可能至少想研究一下。