CCSpriteBatch 节点是否仅绘制可见属性设置为 true 的精灵?
还是它也考虑屏幕尺寸?换句话说。如果节点内的精灵在屏幕之外,opengl 绘制调用的性能会反映这一点吗?
CCSpriteBatch 节点是否仅绘制可见属性设置为 true 的精灵?
还是它也考虑屏幕尺寸?换句话说。如果节点内的精灵在屏幕之外,opengl 绘制调用的性能会反映这一点吗?
没有也没有。
CCSpriteBatchNode 总是绘制所有子精灵。我不确定是什么让可见 = NO 的精灵不会出现在屏幕上,但从技术上讲,它每次都会绘制所有四边形。它也没有考虑屏幕区域。
未批处理的精灵表现不同。如果一个非批处理的精灵不可见,它就不会被绘制。然而,屏幕外的精灵被绘制。Cocos2D 没有跳过在屏幕/窗口边界之外绘制节点的功能。
以下是我过去几年读到的传闻,因此请持保留态度:
太多的批处理精灵仍然会对性能产生负面影响,即使它们不可见或不在屏幕之外。GPU 负责取消由于完全在屏幕之外而不可见的四边形绘制。它仍然需要处理这些四边形。
这是 cocos2d 的 tilemap 实现的主要问题,也是为什么它在大型 tilemap 上如此缓慢。内部瓷砖地图也使用相同的精灵批处理技术。