Cocos2d:CCSpriteBatch节点是否只绘制可见属性设置为true的精灵?

时间:2012-09-17 19:30:07

标签: opengl-es cocos2d-iphone sprite spritebatch

CCSpriteBatch节点是否只绘制可见属性设置为true的精灵?

还是考虑屏幕尺寸?换一种说法。如果节点内的精灵在屏幕之外,那么opengl绘制调用的性能是否会反映出来?

1 个答案:

答案 0 :(得分:1)

不,不。

CCSpriteBatchNode始终绘制所有子精灵。我不确定是什么让精灵可见= NO不会出现在屏幕上,但从技术上讲它确实每次都会绘制所有四边形。它也没有考虑屏幕区域。

未批处理的精灵表现不同。如果看不到非批处理的精灵,则不会绘制它。然而,绘制了屏幕外的精灵。 Cocos2D没有功能可以跳过屏幕/窗口边界之外的节点绘制。

以下是传闻,从我过去几年所读过的内容来看,所以请大家多说:

太多的批量精灵仍然会对性能产生负面影响,即使它们不可见或在屏幕外。 GPU负责取消由于完全在屏幕外而不可见的四边形绘制。它仍然需要处理这些四边形。

这是cocos2d的tilemap实现的主要问题,以及为什么它对于大型tilemaps来说太慢了。内部tilemaps也使用相同的sprite批处理技术。