cocos2dx 2.1.3 在网络回调函数创建对象出现OpenGL error 0x0502

在网络回调创建出现问题。
OpenGL error 0x0501 cocos2dx\textures\cctextureatlas.cpp cocos2d::CCTextureAtlas::drawNumberOfQuads 681
OpenGL error 0x0502 ctextureatlas.cpp cocos2d::CCTextureAtlas::mapBuffers 301
代码:

quarkxV2::qxUInt32 MsgReadFuncImp(const quarkxV2::qxByte* szData, quarkxV2::qxUInt32 unSize)
{

    if (unSize == -1)
    {
        return 0;
    }

    memcpy(m_pBuffer+m_nBufferLen, szData,unSize);
    CCLOG("MsgReadFuncImp unSize =%d" ,unSize);
    //心跳处理
    g_objHeartBeatMgr.OnHeartBeat();
    //处理数据
    m_nBufferLen += unSize;
    
    while ( m_nBufferLen>=sizeof(TCP_Head) )
    {
        //取出前8字节数据
        char headChar;
        memset(headChar,0,sizeof(headChar));
        memcpy(headChar,m_pBuffer,8);

        //取的数据长度
        TCP_Head* head = (TCP_Head*)headChar;
        int curLen = head->TCPInfo.wPacketSize;

        //长度效验,小于包头 或者 大于当前数据总长度,说明只接收了一半数据,跳出处理
        if( curLenm_nBufferLen)
        {
            break;;
        }

        //取的当前长度 开始处理
        char*  curBuffer = new char;

        memset(curBuffer,0,sizeof(curBuffer));
        memcpy(curBuffer,m_pBuffer,curLen);

        //数据映射
        if( !CQPCipher::decryptBuffer(curBuffer,curLen)){
            
            break;
        }

        CCLOG("handle length:%d",curLen);
        g_objLock.lock();
      SocketDelegateWithHeartRecvData(curBuffer,curLen);//创建对象函数
        g_objLock.unlock();
        //减去已处理长度
        m_nBufferLen -= curLen;

        //数据移动
        memmove(m_pBuffer, m_pBuffer+curLen, m_nBufferLen);

        //跳出判断
        if( m_nBufferLen<sizeof(TCP_Head) ){
            CCLOG("handle one data---------------------------");
            break;
        }
    }
    
    return 0;
}



```

有什么问题?什么解决?谢谢

你的网络应该是子线程中吧,不要在子线程中调用opengl的接口。

嗯。谢谢了,解决了!!!没错网络线程接收消息要放到UI主线程处理或更新UI信息。

请问怎么放到主线程处理?