我需要在两个 OpenGL 上下文之间共享纹理数据,一个是核心配置文件(当前 10.10 OS X 上的版本 4.1),另一个是旧版(版本 2.1)。旧版配置文件由第三方库创建。
Apple documentation说要在上下文之间共享资源,它们必须相似(例如相同的配置文件)。
Not every context can be shared with every other context. Both contexts must share the same OpenGL profile.
是否有另一种方法可以实现避免内存传输?
(当前可行的解决方案是先将纹理下载到 CPU,然后在第二个上下文中重新上传到 GPU,这可以,但非常慢...)
最佳答案
在 OSX 上,您可以使用 IOSurface 在不同上下文(无论 opengl 配置文件如何)之间共享纹理。这很容易。您创建一个 IOSurface (IOSurfaceCreate),然后在两个上下文中基于此 IOSurface 创建纹理(使用 CGLTexImageIOSurface2D),我认为它们只是同一 VRAM 位置的包装器。很简单:-)
关于c++ - 在 OS X 上的 OpenGL 上下文之间共享数据(不同版本/配置文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32225174/