CacheAs静态缓存优化

合理使用CacheAs静态缓存优化可以提高渲染性能

CacheAs属性值有none、normal、bitmap,默认为none;

* <p>指定显示对象是否缓存为静态图像,cacheAs时,子对象发生变化,会自动重新缓存,同时也可以手动调用reCache方法更新缓存。</p>

* <p>建议把不经常变化的“复杂内容”缓存为静态图像,能极大提高渲染性能。cacheAs有"none","normal"和"bitmap"三个值可选。

* <li>默认为"none",不做任何缓存。</li>

* <li>当值为"normal"时,canvas模式下进行画布缓存,webgl模式下进行命令缓存。</li>

* <li>当值为"bitmap"时,canvas模式下进行依然是画布缓存,webgl模式下使用renderTarget缓存。</li></p>

* <p>webgl下renderTarget缓存模式缺点:会额外创建renderTarget对象,增加内存开销,缓存面积有最大2048限制,不断重绘时会增加CPU开销。优点:大幅减少drawcall,渲染性能最高。

* webgl下命令缓存模式缺点:只会减少节点遍历及命令组织,不会减少drawcall数,性能中等。优点:没有额外内存开销,无需renderTarget支持。</p>

cacheAs使用的选择

当对象非常简单,比如一个字或者一张图片时,设置cacheAs不但不提高性能,反而会损失性能;

对于经常变化的内容,如果设置了casheAS,则由于容器内频繁变化,导致频繁重绘,也会损失性能;

扫描二维码关注公众号,回复: 9965200 查看本文章

至于使用casheAS时选择normal还是bitmap,normal性能优化程度不如bitmap,但是内存开销比bitmap小,

且没有2048大小的限制;bitmap模式,在webGL下renderTarget缓存模式有2048大小限制,

超出2048会额外增加内存开销。不适用于低端机。

测试是否频繁重绘

DebugPanel.init();调出调试窗口

选“显示当前cache重绘”选项或“显示所有重绘区域”。如果UI进行重绘了,重绘区域会显示出绿色框线,绿色框的左上角显示了重绘次数与重绘时间,性能统计工具的Sprite、DrawCall等也会发生改变。

在没有鼠标操作的情况下,如果绿色线框频繁出现,说明UI在频繁的重绘,那么最好不要用bitmap缓存模式,normal模式可以酌情考虑

总结起来就是,UI节点数(包括容器)较多时,能用casheAS时(能用casheAS的两个条件:1、节点数较多;

2、没有频繁变动;),兼容低端设备或者就用normal,不用兼容低端设备就用bitmap。节点数越多,使用casheAS后,

优化效果越明显。

实际开发时,不知如何取舍时,可以根据实际情况,分别设置cashAs和不设置cashAs,根据最终统计面板数据进行选择

DrawCall尽量控制在100以下

发布了61 篇原创文章 · 获赞 2 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_22794043/article/details/89380781
今日推荐