CCRenderTexture在子线程中崩溃 - “无法将纹理附加到帧缓冲区”

时间:2014-09-24 15:32:07

标签: c++ multithreading cocos2d-x

cocos2d::CCTexture2D* texture = iSprite->getTexture();

CCRenderTexture* rt = CCRenderTexture::create(texture->getPixelsWide(), texture->getPixelsHigh());

Cocos2d:断言失败:无法将纹理附加到帧缓冲区

当我在主线程中调用CCRenderTexture时 - 一切正常。但是,如果我尝试从子线程调用CCRenderTexture,我会收到此断言。

如何在主线程中调用此方法?因此,disoc_async在cocos 2d-x中不可用。

谢谢!

1 个答案:

答案 0 :(得分:0)

在Cocos2D中,任何创建或修改纹理的代码都必须在主线程上运行。这是OpenGL的限制,因为附加或分离纹理必须从创建OpenGL上下文的同一个线程完成。通常这是主线索。

简而言之:您无法在主线程以外的任何线程上创建,渲染或从CCRenderTexture中获取图像。