【问题标题】:EAGLSharegroup like functionality for cross platform developement in c++ openGLEAGLEShare 类似 c++ openGL 中跨平台开发的功能
【发布时间】:2013-10-24 19:41:59
【问题描述】:
我正在尝试在跨平台 cocos2d-x 游戏中使用 GPUImage 库的 c++ 端口。 GPUImage 和 cocos2d-x 都创建了自己的 OpenGL 上下文来在 GPU 上执行操作,这会导致应用程序出现问题。对于为 iOS 创建的原始 GPUImage 库,作者建议使用 'sharegroup' 来共享 GPUImage 和 cocos2d here 之间的上下文。 Apple docs here 中也给出了“sharegroup”的使用。因为,我想制作一个跨平台游戏(适用于安卓和 iOS),所以我一直在寻找其他平台(如安卓)上的相同功能?可以跨平台实现吗?
【问题讨论】:
标签:
android
opengl-es
cross-platform
cocos2d-x
gpuimage
【解决方案1】:
像这个答案中建议的那样做呢:https://stackoverflow.com/a/7892531/369009
Android 提供 EGL,它支持 OpenGL 的通用概念
共享组(虽然是隐式的;您提供一个现有的上下文
你希望一个新的上下文通过第三个在一个公共组中
eglCreateContext 的参数)。如果两个上下文在一个共享组中
那么他们每个人都有一个独立的状态并且可以安全地调用
只有一个线程,但命名对象,如纹理或顶点缓冲区
他们每个人都可以使用对象。因此,您可以使用共享组
同时在多个线程上执行 OpenGL 动作,以便
能够在单个线程上组合结果。
这行得通吗?我想这将是相当跨平台的(只要支持 EGL),但是您必须以某种方式同步对共享对象(纹理,...)的访问。