Cocos2D-iPhone中的多线程OpenGL编程

Asa*_* R. 9 iphone multithreading opengl-es cocos2d-iphone

为了尝试为我正在开发的iPhone游戏创建加载栏(使用Cocos2D),我想使用多线程方法.

一个线程显示一个加载屏幕并运行主应用程序事件循环,而一个新线程在后台静默加载所有Sprite(通过spriteWithFile),然后将它们添加到一个层.

我使用NSThread的detachNewThreadSelector方法创建新线程(该方法通过performSelectorOnMainThread将加载状态的更新发送到主线程).

我面临的问题是新线程中的任何OpenGL调用(例如在spriteWithFile方法中找到的调用)都会出现BUS ERROR或某种类型的内存访问错误.我假设这是因为两个线程都试图同时进行OpenGL调用,或者新线程不知道OpenGL上下文.

必须采取哪些措施才能允许多个线程使用Cocos2D-iPhone在iPhone上进行OpenGL调用.

Rhy*_*man 2

我也想做这个。

我从这个线程开始。

PS:这个答案已经很老了,现在我不确定异步纹理加载是否像以前一样有用,因为 iOS5 通过CVOpenGLESTextureCaches. 当然,您仍然可以(并且应该)在辅助线程中加载您的资源,但EAGLContext现在似乎没有必要为该线程提供一个。