Layabox的2d精灵的性能优化

在使用Layabox的2d精灵时,我们会需要很多渲染图片的需求,那么,如果做到使用最小的代价实现图片的渲染呢。

合并图集

为什么要合并图集呢。如果你一个图片是由多张图片组成的,正常情况,在webgl模式下,渲染一张图片,就是一次drawcall,但是呢,如果纹理没有切换,只是切换渲染的位置,Layabox会自动给你合批,你相当于一次drawcall就实现了整张图片的渲染。
在这里插入图片描述

这个问题发现是我之前测试过官网的瓦块图时,发现设置cacheAs为normal时,它的drawcall只需要一次。而我自己设置的瓦块图,需要渲染多少个瓦块,就有多少drawcall。后来就发现了这个,如果当前的瓦块都属于一张图集,那么,自动合批,会一次性给你渲染出来。
所以,如果都是一个精灵使用的,而且图片还不大,可以合并成一张图片使用,可以降低性能损耗。

设置cacheAs

如果出现多个单个图片,或者无法合并成图集的情况。我们还要想办法降低性能。那就是用到cacheAs方法,这个属性有三个值,'none’就是默认,不缓存。‘normal’就是正常缓存,会把你的精灵渲染的内容,生成graphics的命令模式,但是性能降低不是很多,多张图片切换,还是有很多的drawcall。‘bitmap’直接将渲染完成的纹理缓存起来,这种会增加内存和缓存的占用,如果你的一张精灵就几千次drawcall渲染出来,使用这种方式你可以节省几千次的drawcall。
那么,如果地图过大的话,我们就要灵活使用,即不能占用太大的内存和缓存,还能减少drawcall的方法。
我的实现方式,是增加地图块对象,每个地图块固定宽高,把整个地图分成多张地图块。根据当前地图显示范围进行显示隐藏。显示,设置精灵的cacheAs为’bitmap’,并渲染一次即可。而无法显示的瓦块,我们可以把cacheAs设置为’none’,并且将其graphics调用clear事件清空画布。

希望我总结的经验,能让大家有些收获。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值