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