精华内容
下载资源
问答
  • 【Unity】查看与显示游戏帧数FPS

    千次阅读 2016-10-28 13:24:22
    关于FPS,在PC端来说,游戏帧数跑得越高越好,FPS跑得越高游戏就越流畅,当然太高也没什么必要。 不过在手机平台上,游戏帧数跑高了,CPU和GPU负荷相应则会增大。CPU和GPU负荷大的话那代表着其发热量也相应会大很多...

    FPS是衡量游戏性能的一个重要指标,Unity是跨平台的引擎工具,所以没有统一限定他的帧速率。
    在PC平台,一般说来是越高越好,FPS越高,游戏越流畅。
    在手机平台,普遍的流畅指标为60帧,能跑到60帧,就是非常流畅的体验了,再高的话一来差别很小,二来帧数太高,会耗费CPU和GPU,会导致发热和耗电量大。
      
    public class example : MonoBehaviour
    {
        public float updateInterval = 0.5F;
        private double lastInterval;
        private int frames = 0;
        private float fps;
        void Start()
        {
            lastInterval = Time.realtimeSinceStartup;
            frames = 0;
        }
        void OnGUI()
        {
            GUILayout.Label(" " + fps.ToString("f2"));
        }
        void Update()
        {
            ++frames;
            float timeNow = Time.realtimeSinceStartup;
            if (timeNow > lastInterval + updateInterval)
            {
                fps = (float)(frames / (timeNow - lastInterval));
                frames = 0;
                lastInterval = timeNow;
            }
        }
    }



    
    
    </pre><pre name="code" class="csharp">using UnityEngine;
    using System.Collections;
    
    public class ShowFPS : MonoBehaviour {
    
        public float f_UpdateInterval = 0.5F;
    
        private float f_LastInterval;
    
        private int i_Frames = 0;
    
        private float f_Fps;
    
        void Start() 
        {
    		//Application.targetFrameRate=60;
    
            f_LastInterval = Time.realtimeSinceStartup;
    
            i_Frames = 0;
        }
    
        void OnGUI() 
        {
            GUI.Label(new Rect(0, 100, 200, 200), "FPS:" + f_Fps.ToString("f2"));
        }
    
        void Update() 
        {
            ++i_Frames;
    
            if (Time.realtimeSinceStartup > f_LastInterval + f_UpdateInterval) 
            {
                f_Fps = i_Frames / (Time.realtimeSinceStartup - f_LastInterval);
    
                i_Frames = 0;
    
                f_LastInterval = Time.realtimeSinceStartup;
            }
        }
    }
    


    展开全文
  • Cocos Creator 刚用上,感觉这不就是Unity的孪生兄弟嘛,简单看完example,然后翻了翻手册,开始上手第一个...发现左下角的FPS调试信息小的看不清,看了半天文档也没发现哪里能调整FPS字体的大小,在QQ群里咨询半天...

    Cocos Creator 刚用上,感觉这不就是Unity的孪生兄弟嘛,简单看完example,然后翻了翻手册,开始上手第一个小项目。

    创建了一个TypeScript项目,刚画了个背景,调整了一下大小为1920*1080(为了适应手机屏),选择长宽自适应,然后选择在Chrome内预览:

    发现左下角的FPS调试信息小的看不清,看了半天文档也没发现哪里能调整FPS字体的大小,在QQ群里咨询半天也没人鸟我,终于有人来了一句:改引擎啊。

    为了这点小事就改引擎,那日子还过不过了?

    求人不如求己,按F12启动开发者工具,查看前端代码,首先看能不能通过修改Css的方式来调整字体,然而事情并没有这么简单,FPS信息居然是直接在Canvas上绘制出来的,并不能直接修改Css,看来只能另辟蹊径。

    由于FPS信息是由一个ShowFPS的Btn组件控制是否显示的,顺着这个线索往下走,查看它调用的js:

    <button id="btn-show-fps" class="checked">Show FPS</button> ,id为btn-show-fps,搜索了一下:

     var btnShowFPS = document.getElementById('btn-show-fps');
     btnShowFPS.addEventListener('click', function () {
                var show = !cc.debug.isDisplayStats();
                cc.debug.setDisplayStats(show);
                setCSSChecked(btnShowFPS, show);
                setCookie('showFPS', show.toString());
            });

     查找API手册:setDisplayStats:设置是否在左下角显示 FPS:定位于cocos2d/core/CCDebug.js:365,继续走:

    setDisplayStats: function (displayStats) {
            if (cc.profiler) {
                displayStats ? cc.profiler.showStats() : cc.profiler.hideStats();
                cc.game.config.showFPS = !!displayStats;
            }
        }
        showStats () {
            if (!_showFPS) {
                generateAtlas();
                generateStats();
    
                if (_rootNode) {
                    _rootNode.active = true;
                }
    
                cc.director.on(cc.Director.EVENT_BEFORE_UPDATE, beforeUpdate);
                cc.director.on(cc.Director.EVENT_AFTER_UPDATE, afterUpdate);
                cc.director.on(cc.Director.EVENT_AFTER_DRAW, afterDraw);
                _showFPS = true;
            }
        }
    //  CCProfiler.js

    function
    generateAtlas () { if (_atlas) return; let textureWidth = 256, textureHeight = 256; let canvas = document.createElement("canvas"); canvas.style.width = canvas.width = textureWidth; canvas.style.height = canvas.height = textureHeight; // comment out this to show atlas // document.body.appendChild(canvas) let ctx = canvas.getContext('2d'); ctx.font = `${_fontSize}px Arial`; ctx.textBaseline = 'top'; ctx.textAlign = 'left'; ctx.fillStyle = '#fff'; let space = 2; let x = space; let y = space; let lineHeight = _fontSize; _atlas = new cc.LabelAtlas(); _atlas._fntConfig = { atlasName: 'profiler-arial', commonHeight: lineHeight, fontSize: _fontSize, kerningDict: {}, fontDefDictionary: {} }; _atlas._name = 'profiler-arial'; _atlas.fontSize = _fontSize; let dict = _atlas._fntConfig.fontDefDictionary; for (let i = 32; i <= 126; i++) { let char = String.fromCharCode(i); let width = ctx.measureText(char).width; if ((x + width) >= textureWidth) { x = space; y += lineHeight + space; } ctx.fillText(char, x, y); dict[i] = { xAdvance: width, xOffset: 0, yOffset: 0, rect: { x: x, y: y, width: width, height: lineHeight } } x += width + space; } let texture = new cc.Texture2D(); texture.initWithElement(canvas); let spriteFrame = new cc.SpriteFrame(); spriteFrame.setTexture(texture); _atlas.spriteFrame = spriteFrame; }

    可以看到,这个CCProfiler.js文件里面设置的就是绘制Canvas中调试信息的各种参数,进行修改以后,重新编译代码即可。

    修改其中几个参数:

    let _fontSize = 30;  //字体大小
    let textureWidth = 512,  //canvas的长宽
    textureHeight = 512;
    ctx.fillStyle = '#000';  //字体颜色
    right.x = 400; //右侧信息的x坐标,这个如果不修改,会导致左右重叠在一起
     

    查看官方文档中有关定制引擎的内容:https://docs.cocos.com/creator/manual/zh/advanced-topics/engine-customization.html

    只需要安装nodejs,npm,gulp,再在engine目录下调用gulp指令进行编译即可。

    当然编译过程也是曲折的,缺少了很多包,逐个装上以后,终于编译通过,反复修改编译的时候,频繁出现这个堆内存溢出的错误:

    ....Ineffective mark-compacts near heap limit Allocation failed....

    这个错误暂时没有发现好的解决方案,只能通过给node进程分配更多的内存来解决。不解决也可以,多编译几次就过了。

    最终效果图:

    可以看到在没有修改Camera以及其他参数的情况下:FPS信息清晰显示在了左下角,颜色修改为黑色。

    原来还真得改引擎啊!

     

    转载于:https://www.cnblogs.com/xrjian/p/10553990.html

    展开全文
  • FPS的定义

    2021-05-25 09:33:34
    FPS 是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指...最简单的就是我们玩儿 LOL 英雄联盟、 CS 、以及手机上的王者荣耀等游戏中说的“ FPS 值”。而在显示器的刷新率中,如果你使用过那种很笨重的 CRT 显

    FPS 是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。 FPS 是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是 30 。某些计算机视频格式,每秒只能提供 15 帧。

    FPS 30vs60

    FPS 也可以理解为我们常说的“刷新频率”或者“刷新率”,使用“赫兹”( Hz)为单位。最简单的就是我们玩儿 LOL 英雄联盟、 CS 、以及手机上的王者荣耀等游戏中说的“ FPS 值”。而在显示器的刷新率中,如果你使用过那种很笨重的 CRT 显示器,那么你一定经历过将刷新率调低后,看着整个画面都是在闪烁的,所以当时的显示器的刷新率最大也就只有 60Hz,而现在子凡随便一看都是 150Hz 了,但是也会更具显卡来设置,当然 60Hz 也够了。其中子凡说的 60Hz 的刷新率刷也就是指屏幕一秒内只扫描 60 次,即 60 帧/秒。

    展开全文
  • 4、APP FPS测试

    2018-08-01 11:50:00
    FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。 那么我们如何测试一个应用的FPS呢?其实有很...

    什么是FPS

    FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。

     

    那么我们如何测试一个应用的FPS呢?其实有很多方法,这里介绍一个手机上自带的功能----  GPU呈现模式分析

     

    设置方法

    步骤:

    1、打开手机开发者选项

    2、打开开发者选项,一直往下拉,选择GPU呈现模式分析,选择在屏幕上显示为条形图

     

     

    3、打开被测应用

     

     图像分析:

     

      我们能看到屏幕下方出现连续的柱状图,每一根都由红、黄、蓝三色组成,在屏幕上你还可以看到一根水平的绿线,绿线可以看作是基线。在Android系统中是以每秒60帧为满帧的,那么只要将1秒÷60帧,就能得出每帧为16毫秒(ms)时为满帧的界限,每帧快于16ms即为流畅,而这根绿线所标示的高度即为16ms线,低于绿线即为流畅

     

      红色代表了“执行时间”,它指的是Android渲染引擎执行盒子中这些绘制命令的时间,假如当前界面的视图越多,那么红色便会“跳”得越高。实际使用中,比如我们平时刷淘宝App时遇到出现多张缩略图需要加载时,那么红色会突然跳很高,但是此时你的页面滑动其实是流畅的,虽然等了零点几秒图片才加载出来,但其实这可能并不意味着你卡住了。

     

      黄色通常较短,它代表着CPU通知GPU“你已经完成视图渲染了”,不过在这里CPU会等待GPU的回话,当GPU说“好的知道了”,才算完事儿。假如橙色部分很高的话,说明当前GPU过于忙碌,有很多命令需要去处理,比如Android淘宝客户端,红色黄色通常会很高。

     

      蓝色。假如想通过绿线来判断流畅度的话,其实蓝色的参考意义是较大的。蓝色代表了视图绘制所花费的时间,表示视图在界面发生变化(更新)的用时情况。当它越短时,即便是体验上更接近“丝滑”,当他越长时,说明当前视图较复杂或者无效需要重绘,即我们通常说的“卡了”。

     

    知道了不同颜色所代表的含义,也知道绿色可以作为基线参考,那么我们可以简单推断出APP运行是否流畅,当然呢,也只能作为参考。更深的东西,还需要继续研究。

    转载于:https://www.cnblogs.com/suim1218/p/9400451.html

    展开全文
  • FPS的Log代码

    2016-02-11 22:08:33
    手机显示log
  • android fps帧率分析

    千次阅读 2018-08-22 12:19:39
    本文要解决的问题是:如何查看android应用界面fps的帧率 我使用的是MAC,一下都是局域mac做实践 1、打开测试手机(真机)的开发者选项 2、找到GPU呈现分析模式并打开,如下图 如果选择“在屏幕上显示为条形图...
  • 7-FPS

    2016-12-26 16:13:00
    手机屏幕的帧率60,屏幕分辨率1024*768,那么手机各硬件之间每秒要处理的像素为1024*768*60=47185920,分辨率换成2080*1080,那么手机各硬件之间每秒要处理的像素为2080*1080*60=123710400. ( ̄□ ̄||)这还是理论数值...
  • Android 应用FPS测试方法介绍

    千次阅读 2018-09-11 11:25:00
    FPS: (每秒传输帧数) Android应用的帧率FPS是衡量应用流畅度的一个非常重要的指标,可以根据FPS对应用做一些优化 ...(PS:如果选“在屏幕上显示为条形图”刚在手机上直接可以查看,问题在于不好做对比和生成报...
  • Android------APP FPS测试

    2019-05-30 17:16:06
    FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。 那么我们如何测试一个应用的FPS呢?其实有很...
  • FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。 卡顿人体感觉标准  帧率不高于16ms,针对Android系统。 测试方法:  1. 打开手机,进入到开发者选项,点击GPU呈现...
  • 1、FPSFPS测试APP时遇到的...系统获取FPS的原理是这样的:手机屏幕显示的内容是通过Android系统的SurfaceFLinger类,把当前系统里所有进程需要显示的信息合成一帧,然后提交到屏幕进行显示FPS就是1s内Surface...
  • 什么!FPS难道不是越高越好吗?

    千次阅读 2020-09-15 18:10:00
    导语 |在很长一段时间里,手机的刷新率都是60Hz,随着硬件设备性能的提升,各种高刷新率的移动设备层出不穷,移动端也能有120Hz的显示设备。那么手机上的游戏真的是FPS越高越好吗?本...
  • Android获取FPS的方式

    千次阅读 2016-02-18 17:18:17
    开发者选项 -> GPU显示配置文件 -> 选择 “adb shell dumpsys gfxinfo” 2. 在手机上滑动一段时间 3. 在PC终端上运行 “adb shell dumpsys gfxinfo > /tmp/1.log” 4. 打开 1.log, 会看到以下的信息,每一行为每...
  •  该款CYIWOSC1300AA 130万像素图像传感器与CYIWCSC1300AA 130万像素SoC图像传感器是采用Cypress的0.13微米CMOS工艺、专为图像传感器生产的可拍照手机图像传感器。 赛普拉斯的130万像素图像传感器采用1/4英寸光学...
  • 1.保证手机与PC连接是正常的...3.把手机停放在被测软件上,在PC上打开cmd,输入adb shell "dumpsys window|grep mCurrentFocus之后会显示app的包名 4.打开被测app进行滑动页面,结束后在,命令行中输入adb shell dumps
  • 无论是手机端还是PC端,画面的流畅度一直被用户视为衡量应用视觉体验的重要标准。...FPS即Frames per Second(每秒显示的帧数),用于测量显示帧数的度量。帧数为0说明页面处于静止,只要页面动...
  • android测试lcd频率FPS2D_V3.1.0.ap

    热门讨论 2013-06-02 21:16:02
    任何平台只要是android手机都能用 avg显示为刷新率平均值!
  • FPS:即帧 /秒(frames per second)的缩写,也称为帧速率。是指1秒钟时间里刷新的图片的帧数,也可以理解为图形处理器每...每秒钟帧数(fps)越多,所显示的动作就会越流畅。在绝大多数图形程序中(以游戏类为典型),...
  • 将应用切入后台进行 CPU 数据的监测,结果显示,即使应用不进行任何操作,应用的 CPU 占有率都会持续的增长 卡顿的原因大致有:布局性能不好,内存垃圾回收机制(GC)--内存抖动(大量的内存在短期内占用和释放)...
  • 最近增加的90赫兹显示屏为智能手机上的更好游戏铺平了道路。在OnePlus 7T推出之前,90Hz显示屏仅限于游戏智能手机。现在,一些OEM已开始将刷新率更高的显示器移植到新的智能手机上。制造商已经对智能手机的几个功能...

空空如也

空空如也

1 2 3 4 5 6
收藏数 102
精华内容 40
关键字:

手机fps显示