C++ cocos2d-x为什么使用来自服务器的多线程加载精灵是黑色的
我使用“pthread”创建一个新线程。它从服务器加载精灵。但是,雪碧是黑色的C++ cocos2d-x为什么使用来自服务器的多线程加载精灵是黑色的,c++,cocos2d-iphone,pthreads,C++,Cocos2d Iphone,Pthreads,我使用“pthread”创建一个新线程。它从服务器加载精灵。但是,雪碧是黑色的 class Test: public CCLayer { public: Test(); ~Test(); virtual bool init(); ... private: pthread_t _tid; static void* _loadSprite(void*); void _doSth(); CCSprite* _loadSpriteFromS
class Test: public CCLayer
{
public:
Test();
~Test();
virtual bool init();
...
private:
pthread_t _tid;
static void* _loadSprite(void*);
void _doSth();
CCSprite* _loadSpriteFromServer(); // load sprite from server.
};
void* Test::_loadSprite(void* param)
{
Test* pThis = (Test*)param;
pThis->_doSth();
return NULL;
}
bool Test::init()
{
pthread_create(&_tid, NULL, _loadSprite, this);
}
void Test::_doSth()
{
CCSprite* pSprite = _loadSpriteFromServer();
addSprite(pSprite); // the sprite is 'black'
}
谁能帮我,这困扰了我三天 您不能只线程化需要访问OpenGL的代码。在本例中:创建精灵,更具体地说,创建精灵的纹理。这需要在与OpenGL上下文相同的线程上完成,OpenGL上下文通常是主线程
您可以通过线程加载图像并将其保存在设备上,但您必须将创建精灵移动到主线程。这里有一个类支持cocos2d-x v3中的服务器端/远程精灵