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 

	@Override
    public 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

相关推荐

  1. cocos creator 60 生效meta50 刷新90

    2024-05-15 21:22:05       24 阅读
  2. 008.googleNet-FashionMNIST-正确90.510

    2024-05-15 21:22:05       41 阅读
  3. 商城数据库(51 52 53 54 55 56 57 58 59 60

    2024-05-15 21:22:05       30 阅读
  4. 显示器刷新

    2024-05-15 21:22:05       43 阅读
  5. 调整视频、分辨率

    2024-05-15 21:22:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-15 21:22:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-15 21:22:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-15 21:22:05       82 阅读
  4. Python语言-面向对象

    2024-05-15 21:22:05       91 阅读

热门阅读

  1. yolo进行视频检测结果没有生成

    2024-05-15 21:22:05       30 阅读
  2. Linux函数

    2024-05-15 21:22:05       28 阅读
  3. nvr国标sip端口信息异常的处理

    2024-05-15 21:22:05       32 阅读
  4. SpringBoot+Mock Mvc测试web接口增删改查、导入导出

    2024-05-15 21:22:05       30 阅读
  5. 微信小程序更新日志

    2024-05-15 21:22:05       32 阅读
  6. 设计模式之——单例模式

    2024-05-15 21:22:05       34 阅读
  7. android设计模式-单例模式

    2024-05-15 21:22:05       38 阅读
  8. 【设计模式】单例模式-学习记录

    2024-05-15 21:22:05       34 阅读
  9. redis中的大key问题

    2024-05-15 21:22:05       28 阅读
  10. Android Studio实现简易音乐播放器(期末作业)

    2024-05-15 21:22:05       33 阅读
  11. Android security知识点总结

    2024-05-15 21:22:05       26 阅读