c++ - 在 OS X 上的 OpenGL 上下文之间共享数据(不同版本/配置文件)

标签 c++ macos opengl

我需要在两个 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/

相关文章:

c++ - 在 reading/dev/fb0 上没有得到预期的输出

c++ - 静态 constexpr 类成员何时需要类外定义?

c++ - 代码 (C++) 到论坛的 html 转换器

macos - Docker & Postgres : Failed to bind tcp 0. 0.0.0:5432 地址已在使用中

ios - Swift:在转义被调用函数的闭包中捕获inout参数

ruby-on-rails - 使用 rails 的 bundler 问题(mac 用户)

c++ - 类模板和友元类

c++ - char* 列表到字符串 vector

c - opengl View 、投影和正交纵横比

c++ - OpenGL with Qt 5 : #error gl. h 包含在 glew.h 之前