CCBatchNode 添加CCSprite后显示问题

cocos2d-x-2.2.3下

在CCBatchNode里面添加一个CCSprite(另外的纹理集),这个CCSprite后面的CCArmature就会显示不出来
这个问题怎么解决呢?

void CCBatchNode::draw()
{
CC_NODE_DRAW_SETUP();
CCObject *object = NULL;
CCARRAY_FOREACH(m_pChildren, object)
{
CCArmature *armature = dynamic_cast<CCArmature *>(object);
if (armature)
{
CCTextureAtlas *atlas = armature->getTextureAtlas();
if(atlas != m_pAtlas && m_pAtlas)
{
m_pAtlas->drawQuads();
m_pAtlas->removeAllQuads();
}

        armature->visit();
        m_pAtlas = armature->getTextureAtlas();
    }
    else
    {
        ((CCNode *)object)->visit();
    }
}

if (m_pAtlas)
{
    m_pAtlas->drawQuads();
    m_pAtlas->removeAllQuads();
}

}

把((CCNode *)object)->visit();注释掉就ok
为啥CCSprite的visit会影响后面CCArmature的绘制呢?

发现问题原因了

((CCNode *)object)->visit(); 下面加一句,就可以了
CC_NODE_DRAW_SETUP();

应该是需要恢复一下glstate 和 shader

不知道这样会不会有潜在的问题
现在看来CCArmature和CCSprite都可以显示了

如果这样做会有问题欢迎大家继续跟帖