CCSpriteBatch节点是否只绘制可见属性设置为true的精灵?
还是考虑屏幕尺寸?换一种说法。如果节点内的精灵在屏幕之外,那么opengl绘制调用的性能是否会反映出来?
答案 0 :(得分:1)
不,不。
CCSpriteBatchNode始终绘制所有子精灵。我不确定是什么让精灵可见= NO不会出现在屏幕上,但从技术上讲它确实每次都会绘制所有四边形。它也没有考虑屏幕区域。
未批处理的精灵表现不同。如果看不到非批处理的精灵,则不会绘制它。然而,绘制了屏幕外的精灵。 Cocos2D没有功能可以跳过屏幕/窗口边界之外的节点绘制。
以下是传闻,从我过去几年所读过的内容来看,所以请大家多说:
太多的批量精灵仍然会对性能产生负面影响,即使它们不可见或在屏幕外。 GPU负责取消由于完全在屏幕外而不可见的四边形绘制。它仍然需要处理这些四边形。
这是cocos2d的tilemap实现的主要问题,以及为什么它对于大型tilemaps来说太慢了。内部tilemaps也使用相同的sprite批处理技术。