0

我正在尝试在跨平台 cocos2d-x 游戏中使用GPUImage库的 c++ 端口。GPUImage 和 cocos2d-x 都创建了自己的 OpenGL 上下文来在 GPU 上执行操作,这会导致应用程序出现问题。对于为 iOS 创建的原始 GPUImage 库,作者建议在这里使用 'sharegroup' 来共享 GPUImage 和 cocos2d 之间的上下文。Apple docs here中也给出了“sharegroup”的使用。因为,我想制作一个跨平台游戏(适用于安卓和 iOS),所以我一直在寻找其他平台(如安卓)上的相同功能?是否可以在跨平台上实现?

4

1 回答 1

0

像这个答案中建议的那样做呢:https ://stackoverflow.com/a/7892531/369009

Android 提供了 EGL,它支持 OpenGL 共享组的通用概念(尽管是隐式的;您通过 eglCreateContext 的第三个参数提供一个现有的上下文,您希望新的上下文位于一个通用组中)。如果两个上下文在一个共享组中,那么它们中的每一个都有一个独立的状态,并且只能从一个线程调用是安全的,但是命名对象(如纹理或顶点缓冲区对象)对它们每个都是可用的。因此,使用共享组,您可以同时在多个线程上执行 OpenGL 操作,以便能够在单个线程上组合结果。

这行得通吗?我想这将是非常跨平台的(只要支持 EGL),但是您必须以某种方式同步对共享对象(纹理,...)的访问。

于 2013-10-24T11:41:59.790 回答