Unity_优化笔记

Draw call batching: http://docs.unity3d.com/Manual/DrawCallBatching.html

前言

以下都是笔者在网上找到并根据自身经验总结,如有错误请见谅哈~

基础介绍

图形渲染

渲染可以被描述成三步(参考文章):
1) CPU负责处理哪些物体需要被绘制以及如何被绘制。

2)CPU发送指令给GPU。

3)GPU根据CPU指令进行绘制。

什么是DrawCall?

1)Batch 单词 google 翻译的解释是:批量、批次。

2)Stats中的Batches参数:意思是batching后产生的批次数。(其实每一个批次就会调用一次DrawCall)

3)Unity官方文档中的batching是指batch操作和batching技术的称呼。(这里的batching是指“将符合条件的mesh通过CPU变换到统一的世界坐标中”这个操作,也就是合并mesh为一个批次的意思)

4)drawcall,CPU准备好需要绘制的元素,对底层图形程序接口进行调用的过程。drawcall Batching,是Unity对于drawcall的一种优化措施,从字面意思可以理解为drawcall的合并。对于使用相同图集,Material等信息的元素可以合并到同一个drawcall进行绘制,不过这种方式会造成合并后mesh的增大,导致内存占用的上升,对于大多数情况,drawcall batching都是利大于弊的。
在这里插入图片描述

UGUI

1.Unity GUI(uGUI)使用心得与性能总结
2.UGUI drawcall 优化实录
3.UGUI batch 规则和性能优化

个人总结

1.零散的小图最好放到大图中在Unity中切,使用相同的图集的image层级相邻的时候会合并成一个Batche
在这里插入图片描述
使用不同图集Batches
在这里插入图片描述
使用相同图集Batches
在这里插入图片描述

2.相邻图片使用同一个图集里的图会被合成一个批次,但是中间如果有其它图集的图并且发生重叠会被打断。
Image_1和Image_2使用的是同一个图集里的sprite,当他们相邻的时候总Batches是5
在这里插入图片描述
当它们中间插入其它的ui并且它不属于同一个图集则会被打断增加Batches


3.使用Canvas可以起到隔离UI重建。
在这里插入图片描述
如下图所示Image_1与Image_红_左发生重叠打断了Image_红_左/右的合并增加了一个Batche
在这里插入图片描述
如果把Image_红_左/右移入到一个新的Canvas就可以防止以上的情况发生,Canvas起到隔离打断的作用。
在这里插入图片描述
也可以在FrameDebug中查看渲染情况
在这里插入图片描述
在这里插入图片描述

按需渲染

大多数时候,项目并不需要一直保持最高帧率渲染,尤其是在移动平台上。过去,Unity开发者们常使用Application targetFrameRate或Vsync(垂直同步)来限制引擎的渲染速度。这种方法在影响渲染的同时,还会对其他部分的运行速率造成一些影响。而新的按需渲染API允许开发者将渲染频率从整体中独立出来调整。

发布了30 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_26318597/article/details/103955741