1、首先简单介绍一下什么叫填充率:
Fill Rate(填充率)是指显卡每帧或者说每秒能够渲染的像素数。在每帧绘制中,如果一个像素被反复绘制的次数越多,那么它占用的资源也必然更多。目前在移动设备上,FillRate 的压力主要来自半透明物体。因为多数情况下,半透明物体需要开启 Alpha Blend 且关闭 ZTest(深度测试)和 ZWrite(深度写入),同时如果我们绘制像 alpha=0 这种实际上不会产生效果的颜色上去,也同样有 Blend 操作,这是一种极大的浪费。
2、OverDraw : 重复绘制,即在一个已存在像素的位置再次绘制其他像素
简单来说,就是一个像素在荧幕被绘制了多次。在像素处理中,overdraw是最常见的性能瓶颈之一。
3、在Unity中,填充率并不能被直接统计到,但是我们可以通过查看来大致查看,但是Unity提供的查看OverDraw的视图其实是不太准确的,如果需要精确的查看的话,需要自己实现。
4、如何降低 OverDraw:
1>尽量减少 alpha = 0 的资源的使用,因为这种资源也会参与绘制,占用一定的GPU
2>制作图集的时候,尽量使小图排布紧凑,尽量避免图集的中的大面积留白,原因同上。
3>避免无用对象及组件的过度使用。
5、另外,游戏运行时导致手机发烫,主要就是CPU和GPU的占用率过高引起的,而填充率或者说是OverDraw过高,是导致GPU占用率过高的原因之一。