当前位置: 首页 > news >正文

cocos creator 帧率60 不生效meta50 能刷新到90

环境:
cocos creator 2.4.3
华为meta 50

背景:
小游戏 需要在update 里取帧率 发现跟时间对不上
游戏设置60帧
手机上显示 90帧
cc.game.setFrameRate(30) 显示 30帧
cc.game.setFrameRate(60) 显示 90帧

结论:
对于老版本的cocos creator 如果有依赖帧率的逻辑
需要自行注意逻辑正确性
cc.game.getFrameRate() 取出来的帧率 有可能 并不是当前真实帧率 只是逻辑帧率

源码分析:

	cocos2dxRenderer.java @Overridepublic void onDrawFrame(final GL10 gl) {if (mNeedToPause)return;if (mNeedShowFPS) {///IDEA: show FPS in Android Text control rather than outputing log.++mFrameCount;long nowFpsTime = System.nanoTime();long fpsTimeInterval = nowFpsTime - mOldNanoTime;if (fpsTimeInterval > 1000000000L) {double frameRate = 1000000000.0 * mFrameCount / fpsTimeInterval;Cocos2dxHelper.OnGameInfoUpdatedListener listener = Cocos2dxHelper.getOnGameInfoUpdatedListener();if (listener != null) {listener.onFPSUpdated((float) frameRate);}mFrameCount = 0;mOldNanoTime = System.nanoTime();}/}/** No need to use algorithm in default(60 FPS) situation,* since onDrawFrame() was called by system 60 times per second by default.*/if (sAnimationInterval <= INTERVAL_60_FPS) {Cocos2dxRenderer.nativeRender();} else {final long now = System.nanoTime();final long interval = now - this.mLastTickInNanoSeconds;if (interval < Cocos2dxRenderer.sAnimationInterval) {try {Thread.sleep((Cocos2dxRenderer.sAnimationInterval - interval) / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);} catch (final Exception e) {}}/** Render time MUST be counted in, or the FPS will slower than appointed.*/this.mLastTickInNanoSeconds = System.nanoTime();Cocos2dxRenderer.nativeRender();}}

分析上述代码

if (sAnimationInterval <= INTERVAL_60_FPS) {Cocos2dxRenderer.nativeRender();
}

说明 >= 60帧的设置 。没有处理刷新帧率 走的系统是高刷
所以会导致 dt 并不是 60帧的dt

http://www.lryc.cn/news/349247.html

相关文章:

  • 探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction
  • 【核弹】我的第一款IDEA插件
  • 【工作篇】软件工程师的知识基础(持续更新)
  • 知识付费系统开源方案,教育机构如何利用朋友圈做转介绍?
  • c++20 std::reinterpret_cast、std::bit_cast、std::static_cast
  • PHP单独项目启动演示
  • vscode 通过ssh 远程执行ipynb +可以切换conda env
  • ASP.NET银行大厅自助信息系统的开发与实现
  • 学习Vue3中reactive
  • 【Transformer-BEV编码(10)】CVPR2021 PYVA 第一个明确提到 cross-attention decoder可用于视图转BEV
  • nestJs中跨库查询
  • Java编程思想
  • 数组(Java)
  • 接口自动化测试框架搭建
  • (四十二)第 6 章 树和二叉树(树的二叉链表(孩子-兄弟)存储)
  • 测试萌新Python学习(五)接口自动化测试requests
  • Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树
  • QT日志类SimpleQtLogger的简单记录
  • 设计模式:观察者模式
  • ICode国际青少年编程竞赛- Python-5级训练场-带参数函数
  • 运维别卷系列 - 云原生监控平台 之 02.prometheus exporter 实践
  • OSPF基本配置
  • HIVE大数据平台SQL优化分享
  • JS算法-十大排序算法(上)
  • c++编程(11)——string类的模拟实现
  • Python从0到POC编写--函数
  • 【教程】Linux/Jetson 安装X11VNC同步屏幕内容
  • 【LLM第五篇】名词解释:prompt
  • k8s v1.20二进制部署 部署 CNI 网络组件 部署 Calico
  • 在React中利用Postman测试代码获取数据