浏览器和真机(iOS/Android)帧率和drawcall天差地别

版本:3.6.1
浏览器运行帧率60和drawcall 50
真机运行(iOS/Android)帧率5 drawcall 701
企业微信截图_e9fff7a4-ace1-4605-8e36-62d998f7538d
企业微信截图_03445b11-2193-4bf3-81c9-b6703fc2cc89


应该是这个问题,又说的3.7.1修复。。。
我以为你们做游戏都没有这种场景的需求呢,我看只有我一个人在吼。。。
多场景不可见游戏进程需要继续走的时候不就需要透明度=0降低dc让游戏继续按进程走嘛

谢谢。项目没有设置opacity,直接加载预制体,进入界面后浏览器和真机的fps、dc等不差别很大

那就是动态合图导致的喽,估计你打包时用了自动图集吧 :joy:

1赞

查看了一下打包配置,模块资源采用远程加载的方式,打包时也没有采用自动图集。

求解,如果没有解决方案只有回退到2.4去做了

1赞

我也放弃3.6引擎了。改2.4

cocos3.x
原生基本无作品(有点绝对),也没看见谁拿来秀
都是在做h5广告播放器

这个你可以自己测性能。例如创建1000个Sprite. 对比2.4 &&3.4 在手机上跑跑微信小游戏。

1年前用3.x写原生的。早已放弃。
测啥测,3.x有啥好测的。
这不是浪费时间吗

web写的好好的,表现好好的。
放到原生就是各种屎

看看没有采用自动图集,如果你自己本身没有进行合图操作的话
1.查看有没有打开动态合图,如果没有,那么一张图片代表一个drawcall
2.打开了动态合图,那么查看你的每一张图片,属性有没有勾选packagable(允许合图),如果没有,那么还是单drawcall,那么多少个图片/文字那么就是多少个drawcall了。
讲道理不应该会这样,我3.0开始用,已经有成熟的中等商业项目在跑了,都没遇到你这个问题

看倒数第二项,应该就是没在原生上开启动态合图了,不然不会这么少。当然在原生上开启动态合图也是有内存爆炸的风险的

1赞

我希望官方以后为原生平台增加一个 “去原生化” 的选项… 也就是, 除了底层 gfx, 其余模块仍沿用 js 实现.

比如 batch2d, 由于原生平台是 C++ 替代 TS 来实现的, 这给兼容性, 扩展性带来了很多麻烦.

(因为我写了个 System 需要 patch batcher2D, 结果发现 native 无法 patch, 前期努力白费了)

使用动态合图drawcall降下来了,但是fps还是维持在10帧左右

macro.CLEANUP_IMAGE_CACHE = false

dynamicAtlasManager.enabled = true

dynamicAtlasManager.maxFrameSize = 1024

https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html?h=动态图集

动态合图可以降低drawcall

企业微信截图_8c586e96-07cb-4d8d-a4af-44f44b3e1e37 企业微信截图_4af59511-9dc9-4689-b43a-ad7f64980b4e
左图为浏览器、右图iphone

你不知道吗 creator h5的性能是远超 原生的 本来这个引擎都是为了做h5用的 你居然拿来和原生比对性能

主要是性能数据差别实在是大,官方又一直推荐使用3.x

物理性能相差70倍,原生就应该用原生的物理…但cocos现在还是用js版本的物理引擎,导致没有jit的ios下面性能太差

企业微信截图_c12031ff-b258-419b-b455-eded422ea8c2
该用2.4.10后帧率会掉一点,不过总比在3.x上好
优化一下应该能稳定在60左右