如何优化DrawCall

本文探讨了Drawcalls(绘制调用)对游戏性能的影响及优化方法。作者通过实测发现,即使Drawcalls数量较低,若某些着色器或脚本过于耗时,也可能导致帧率下降。文章还介绍了如何通过减少纹理和材质数量来降低Drawcalls,以及利用MeshBaker等插件进行模型合并以提高游戏性能。
摘要由CSDN通过智能技术生成
Draw calls是基本的参考数值,但并不是绝对的。有时候DC很低,依然FPS上不来,原因就是有某个shader或script太耗时了。

我只作Mobile,通常测试设备2个:1、小米1;2、iPod Touch4;所以,我非常关注DC数量,以及最终的FPS表现。我的测试设备太差了,导致我无法使用太多高级效果,这是一个弊病。当然,我们还是回过来说DC吧。

基本上,我可以实现DC=50的时候,iPod Touch4能跑到30 FPS。我用NGUI+一些粒子+一些骨骼人物模型(同屏10个左右)。

在我们实际设计游戏的时候,时刻关注DC是好习惯。而关注DC实际上是服务于FPS的。这是目的。

简单的说,shader消耗对fps影响最多。shader显示面积也对fps影响很多。可以理解为,一个较为消耗的shader,但是面积比较小,那么就可以继续使用了,但尽力控制面积,别太大。控制数量,别太多。

对于高效的shader而言,比如NGUI的默认shader,因为效率高,即便DC达到100依然可以顺利的跑起来。所以么,经验就是,对于你要使用的shader进行压力测试,1、2、3、10、20、30、100、200、300的GO,看最终效果。

我说的不是假话,我真的作了很多测试,采用相同的GameObject、Script、Camera,Device,并通过更高shader来测试,然后记录下来。。。。。那个文件很大,有些内部内容无法分享。。。。sorry。。。。

这就是个体力活儿,测试+记录Log吧,对shader有了充分的理解后,就能明白哪些DC是必须控制的,哪些DC是可以容忍的了。

最后,你肯定看了很多文章。DC的增加就是因为OpenGL要进行一次新的绘制。基本上都是Texture和Material引起的,所以,减少Texture的数量,减少Material的数量,会很有效。

前面我推荐过Mesh Baker,目的是实现运行状态中的模型合并。事实上,这个插件也能有效的减少DC,值得考虑使用,原理就是,这个插件因为把多个模型合并了,所以他也会合并多个模型的Texture&Material,也就导致了对DC的减少。。。

啰嗦的有点儿多了,多测试多实验,然后研究一下Mesh Baker,祝Luck!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值