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