【发布时间】:2009-07-15 18:32:54
【问题描述】:
为了尝试为我正在开发的 iPhone 游戏(使用 Cocos2D)创建加载栏,我想使用多线程方法。
一个线程显示加载屏幕并运行主应用程序事件循环,而一个新线程在后台静默加载所有 Sprite(通过 spriteWithFile),然后将它们添加到图层。
我使用 NSThread 的 detachNewThreadSelector 方法创建新线程(该方法通过 performSelectorOnMainThread 将加载状态的更新发送到主线程)。
我面临的问题是新线程中的任何 OpenGL 调用(例如在 spriteWithFile 方法中发现的调用)都会因 BUS ERROR 或某种内存访问错误而死掉。我假设这是因为两个线程都试图同时进行 OpenGL 调用,或者新线程不知道 OpenGL 上下文。
必须做些什么才能允许多个线程在使用 Cocos2D-iPhone 的 iPhone 上进行 OpenGL 调用。
【问题讨论】:
标签: iphone multithreading opengl-es cocos2d-iphone