首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

针对 iOS 14 Web 端性能问题的解决方案

在今天这个快乐周五的早上,我们一到公司就收到了一些 CP 的紧急反馈,在 iOS 14 上,H5 游戏的性能下降,线上项目受到严重影响。

经过验证,此问题波及 iOS 14 上的所有浏览器、WebView 运行环境,小游戏和原生游戏不受影响。引擎组立即着手调试,经过一天的排查,发现这个问题的症结在 vb 和 ib 的共享上。

为优化性能,Creator多个 drawcall 之间会共享同一份 vb 和 ib,每个 drawcall 使用一个偏移值在共享 vb 和 ib 中找到本次渲染的数据,但是经过我们验证后发现,共享 vb 和 ib 会导致在 iOS 14 上性能下降非常严重。

所以修复此问题的关键就是,在提交 drawcall 之后,切换 vb 和 ib。经过修改,问题就能得到完全解决。

 解决方案: 

> 2.2 版本:

在项目脚本最外层加入如下代码,直接覆盖cc.MeshBuffer中的方法即可。

也可以自定义引擎,手动合并此PR:https://github.com/cocos-creator/engine/pull/7415 。

2.1.x 版本

原理和 2.2 一样,首先在项目脚本最外层加入如下代码,直接覆盖 cc.MeshBuffer 中的方法。

但 2.1 中没有实现forwardIndiceStartToOffset,所以你还需要自定义引擎并找到model-batcher.js,将_flush方法中的最后三行改为:

2.0.x 版本

自定义引擎,并用此文件 https://forum.cocos.org/uploads/default/original/3X/2/6/2699adeb70a987f69ea2d72a5c5c953279c235dd.zip 覆盖引擎中的mesh-buffer.js,然后再使用和 2.1.x 版本相同的改动方式修改。

注意:自定义引擎后需要重新编译引擎才能生效。建议合并后,使用不同手机进行全面测试。

  诚挚道歉

对于本次意外给各位开发者朋友带来的困扰,我们感到非常抱歉。

性能是 Cocos 永远不变的追求,我们会持续关注这个问题,做好后续预案。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200918A0LZLS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券