cocos2d-x-2.2.3下
在CCBatchNode里面添加一个CCSprite(另外的纹理集),这个CCSprite后面的CCArmature就会显示不出来
这个问题怎么解决呢?
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都可以显示了
如果这样做会有问题欢迎大家继续跟帖