使用CCSpriteBatchNode的好处是每个子项都不是由OpenGL单独绘制的,因此如果屏幕上有许多相同的图像,它将提高使用批处理节点的性能。CCSpriteBatchNode:使用单个框架还是整个纹理图集?
但是,我很好奇,如果你将整个纹理图集加载到CCSpriteBatchNode中会发生什么;这是否意味着当你在纹理地图集中使用单个精灵帧时,它正在(幕后)绘制纹理内的所有精灵帧?
换句话说,有没有这样做之间在性能上有什么区别:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"texture.plist"];
CCSpriteFrame *starFrame=[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"throwstar.png"];
stars=[CCSpriteBatchNode batchNodeWithTexture:starFrame.texture];
[self addChild:stars];
或者,而不是仅仅使用整个纹理图集,而不是starFrame.texture
批次的节点?
当你说batchnode绘制它的孩子时,它只能“画”它们所有的一次,正确(在一批,一个GL呼叫)?但是你也提到每个孩子只会呈现其纹理的一部分。因此,如果多个孩子从同一个批次节点纹理中获得不同的帧,那么每个孩子都会得到自己的渲染调用,因为它是纹理的不同部分? – johnbakers 2012-02-20 01:26:37