3.3 iOS 14.0 ~ iOS 15.3 系统的性能问题
iOS 14 之后,很多H5游戏都遇到性能问题,问题可以归结为:多个drawcall 之间是会共享同一份 vertexBuffer 和 indexBuffer 的,每个 drawcall 使用一个偏移值在共享的 vertexBuffer 和 indexBuffer 中找到本次渲染的数据,在 >= iOS14 系统上,这会使得性能反而变得非常糟糕。
一般不同引擎的社区都有相应的解决方案,如Cocos Creator和Egret Engine。
我们会和引擎团队逐步建联,后续使用最新版的引擎在高性能模式下会自动做这个修复,目前请参照社区的解决方案手动适配。
已经适配的引擎列表: Cocos Creator:2.x版本 >= 2.4.9,3.x版本 >= 3.4.2。
特别注意,cocos < 2.4.9必须手动适配,Cocos的修复仅仅是针对浏览器,对小游戏无效。Cocos适配示意:
// 这里执行修复代码,此处仅为 cocos 引擎修复示意,不同引擎修复方式不同
cc.MeshBuffer.prototype.checkAndSwitchBuffer = function (vertexCount) {
if (this.vertexOffset + vertexCount > 65535) {
this.uploadData();
this._batcher._flush();
}
};
cc.MeshBuffer.prototype.forwardIndiceStartToOffset = function () {
this.uploadData();
this.switchBuffer();
}
Cocos的修复仅仅是针对浏览器,对小游戏无效,请问我们怎么修改可以对小游戏有效,开启高性能模式会自动解决吗,如果不开启高性能模式如何手动适配?
还是开高性能吧,开了后30FPS变60FPS了。