2013-02-21 17 views
0

我使用'pthread'來創建一個新的線程。它從服務器加載精靈。但是,精靈是黑色的!爲什麼cocos2d-x使用來自服務器的多線程加載精靈是黑色的

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' 
} 

誰能幫幫我,這讓我困擾了三天!

回答

2

你不能只是需要訪問OpenGL的線程代碼。在這種情況下:創建精靈,更具體地說是創建精靈的紋理。這需要在與OpenGL上下文相同的線程上完成,後者通常是主線程。

您可以線程加載圖像並將其保存在設備上,但必須將創建精靈移動到主線程。

相關問題