gpt4 book ai didi

iphone - Cocos2D-iPhone 中的多线程 OpenGL 编程

转载 作者:行者123 更新时间:2023-12-03 18:33:04 25 4
gpt4 key购买 nike

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

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

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

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

如何才能允许多个线程使用 Cocos2D-iPhone 在 iPhone 上进行 OpenGL 调用。

最佳答案

郑重声明,新线程需要执行以下两行才能从并发线程使用 OpenGL API:

EAGLContext *k_context = [[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1 sharegroup:[[[[Director sharedDirector] openGLView] context] sharegroup]] autorelease];
[EAGLContext setCurrentContext:k_context];

现在,Cocos2D 0.8.x 中的 TextureMgr 类提供的 addImageAsync 方法已经过时了,该方法为您执行异步纹理加载。

关于iphone - Cocos2D-iPhone 中的多线程 OpenGL 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1133123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com