最近细看了一下cocos creator的图集资源,总结了几点,如果有不对的地方,欢迎指出来。

打图集的主要作用是
1优化包体,因为打图集会自动裁去图片周围的空白区域。
2减少drawcall,提升游戏运行性能。
第一点好理解,主要在第二点,什么是渲染批次,为什么会减少渲染批次。
渲染批次其实就是CPU给GPU(显卡)发出的指令,但是每次发出指令,CPU需要做很多准备工作,准备要渲染的数据,渲染方式等。如果六个散图打成一个图集那么在理想情况下就只要一次drawcall就可以完成,如果不打那么就是六张图六次drawcall。当然这是理想情况,还有一些情况,比如说你打成了一个图集,但是渲染顺序的原因,你在渲染这个图集中的散图的过程中,渲染了其他图集或者贴图资源。那么就不是2次drawcall(一次图集内资源,一次其他图集或者贴图资源)。

举个例子:

现在有两张散图a,b被打成图集AB,还有另一张贴图c。

  • 那么如果渲染顺序是,a->b->c那么因为ab被打成图集AB,所以a,b一次drawcall就够了,再加上一次c的drawcall那么两次drawcall就可以完成。
  • 如果渲染顺序是a->c->b那么此时虽然a,b被打成图集但是因为渲染顺序的问题,a,b不能一起完成因此,drawcall为3。

总结:

如果图集相当于把散图整合成一张大图,一个贴图资源的渲染就需要一次drawcall。但是如果渲染图集过程中被打断,那么CPU要重新准备其他贴图资源的内存,渲染方式等。因此需要重新drawcall以提交新散图的数据。所以,在打图集的时候如果考虑渲染顺序问题会使,性能进一步优化。

Logo

这里是一个专注于游戏开发的社区,我们致力于为广大游戏爱好者提供一个良好的学习和交流平台。我们的专区包含了各大流行引擎的技术博文,涵盖了从入门到进阶的各个阶段,无论你是初学者还是资深开发者,都能在这里找到适合自己的内容。除此之外,我们还会不定期举办游戏开发相关的活动,让大家更好地交流互动。加入我们,一起探索游戏开发的奥秘吧!

更多推荐