1.1流畅度相关概念刷新率 vs 帧率刷新率:美妙屏幕刷新次数,手机品目的刷新率是60HZ帧率:GPU在一秒内绘制的帧率
【资料图】
撕裂 vs 掉帧撕裂:因为屏幕的刷新过程是自上而下、自左向右的,如果帧率>刷新率,当屏幕还没有刷新n-1帧的数据时,就开始生成第n帧的数据了,从上到下,覆盖第n-1帧。如果此时刷新屏幕,就会出现图像的上半部分是第n帧的,下半部分是第n帧的现象。CPU/GPU一直都在渲染。掉帧:Android系统每隔16ms发出VSYNC信号,触发GPU对UI进行渲染,如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候由于还没有准备好,就无法进行更新任何内容,那么用户在32ms内看到的会是同一帧画面(卡顿现象),即丢帧现象。
单缓冲 vs VSYNC vs 双缓存 vs 三缓存单缓冲(没有引入CSync):GPU向缓存中写入数据,屏幕从缓冲中读取数据,刷新后显示。有余刷新率和帧率并不总是一致的,很可能导致撕裂现象。为了解决单缓冲的画面撕裂问题,出现了双缓存和VSYCNCVSYCNC和双缓存:双缓存是用来两个缓存去:Back Buffer、Frame Buffer 当写入下一帧是,GPU会先填充 Back Buffer中,当刷新屏幕时,屏幕从Frame Buffer 中读取数据,VSYNC主要是完成帧的复制,下一帧的渲染三重缓存:双重缓存的缺陷在于:当 CPU/GPU 绘制一帧的时间超过 16 ms 时,会产生 Jank。更要命的是,产生 Jank 的那一帧的显示期间,GPU/CPU 都是在闲置的。
FPS原理FPS是Frame per second的缩写,即每秒的帧数.这一术语广泛的应用于计算机图形学,视频采集,游戏等。
这里主要介绍一下视频游戏中的帧率,第一个First person shooter game的帧率只有大概6FPS,但是依然很成功。不过随着硬件设备,尤其是显卡性能的加强,现在游戏的帧率一般在30FPS~100FPS之间。由于每帧图像所消耗的时间不一样,造成帧率是在不断变化的,所以每个游戏都会设定一个最大的帧率,以保证平滑的切换。
// Timing... static QTime time; static int frames = 0; static bool started = false; if (!started || time.elapsed() > 1000) { qreal fps = frames * 1000. / time.elapsed(); if (fps == 0) m_current_fps = "counting fps..."; else m_current_fps = QString::fromLatin1("%3 FPS").arg((int) qRound(fps)); time.start(); started = true; frames = 0; } else { ++frames; p.setOpacity(1); p.setFont(QFont("times", 30)); p.fillRect(5, height() - 40, 250, 40, Qt::white); p.drawText(10, height() - 8, m_current_fps); } }
由于一般实时的游戏都已一个定时器不断地刷新画面,所以每一帧的输出都是通过paintEvent来完成的。将上面这段代码放入paintEvent就可以统计出每秒的帧率。
那么怎么控制最大的帧率呢?
其实也很简单,就是通过设置定时器的interval来完成的,考虑到现在显示器的显示频率一般在60HZ,所以interval一般设置为1000/60ms 比较好,即60FPS是一个理论上最大的帧率。
帧率(FPS)计算的六种方法总结:一、固定时间帧数法帧率计算的公式为:
fps = frameNum / elapsedTime;如果记录固定时间内的帧数,就可以计算出同步率。此种方法用得较多。
int fps(){ static int fps = 0; static int lastTime = getTime(); // ms static int frameCount = 0; ++frameCount; int curTime = getTime(); if (curTime - lastTime > 1000) // 取固定时间间隔为1秒 { fps = frameCount; frameCount = 0; lastTime = curTime; } return fps;}
还有另一种写法:int fps(int deltaTime){ static int fps = 0; static int timeLeft = 1000; // 取固定时间间隔为1秒 static int frameCount = 0; ++frameCount; timeLeft -= deltaTime; if (timeLeft < 0) { fps = frameCount; frameCount = 0; timeLeft = 1000; } return fps;}
二、固定帧数时间法帧率计算的公式为:fps = frameNum / elapsedTime;如果每隔固定的帧数,计算帧数使用的时间,也可求出帧率。此种方法使用得较少。
int fps(){ static int fps = 0; static int frameCount = 0; static int lastTime = getTime(); // ms ++frameCount; if (frameCount >= 100) // 取固定帧数为100帧 { int curTime = getTime(); fps = frameCount / (curTime - lastTime) * 1000; lastTime = curTime; frameCount = 0; } return fps;}
三、实时计算法实时计算法直接使用上一帧的时间间隔进行计算,结果具有实时性,但平滑性不好。
int fps(int deltaTime) // ms{ int fps = static_cast(1.f / deltaTime * 1000); // 别忘了先转换为浮点数,否则会有精度丢失 return fps;}
四、总平均法总平均法使用全局帧数除以全局时间,以求出帧率。
int beginTime = getTime();int fps(){ static int frameCount = 0; ++frameCount; int deltaTime = getTime() - beginTime(); return static_cast(frameCount * 1.f / deltaTime * 1000); // 别忘了先转换为浮点数,否则会有精度丢失}
五、精确采样法精确采样法采样前N个帧,然后计算平均值。此种方法需要额外的内存空间,所以不常用。
int fps(int deltaTime) // ms{ static std::queue q; static int sumDuration = 0; // ms int fps = 0; if (q.size() < 100) // 样本数设为100 { sumDuration += deltaTime; q.push(deltaTime); fps = static_cast(q.size() * 1.f / sumDuration * 1000.f); // 别忘了转换为浮点数,否则会有精度丢失 } else { sumDuration -= q.front(); sumDuration += deltaTime; sumDuration.pop(); sumDuration.push(deltaTime); fps = static_cast(100.f / sumDuration * 1000.f); // 别忘了转换为浮点数,否则会有精度丢失 } return fps;}
六、平均采样法平均采样法利用上次的统计结果,克服了精确采样法需要使用额外空间的缺点。此种方法较常用。
int fps(int deltaTime) // ms{ static float avgDuration = 0.f; static alpha = 1.f / 100.f; // 采样数设置为100 static int frameCount = 0; ++frameCount; int fps = 0; if (1 == frameCount) { avgDuration = static_cast(deltaTime); } else { avgDuration = avgDuration * (1 - alpha) + deltaTime * alpha; } fps = static_cast(1.f / avgDuration * 1000); return fps;}
-
APP性能测评分析1 1流畅度相关概念 刷新率vs帧率 刷新率:美妙屏幕刷新次数,手机品目的刷新率是60HZ 帧率:GPU在一秒内绘制的帧率
-
谁知道蕾哈娜获得过几座格莱美奖-天天看热讯1、第50届格莱美颁奖典礼,凭借《Umbrella》,获得“最佳饶舌演唱合作”奖;2、第52届格莱美颁奖典礼,凭借《RunThisTown》,获得“最佳饶舌
-
雎晓雯真会穿!针织衫搭喇叭裤秀出逆天长腿,穿出独有女人味儿!_焦点日报雎晓雯最吸睛的当数这套针织牛仔搭了,看这腿,简直秀出了逆天长腿,简直太会穿了!~雎晓雯的这身V领针织衫+牛仔喇叭裤是再正常不过的穿搭了,
-
惠济区花园口镇:齐发力 再提升!奋力描绘文明城市新画卷文明风起阡陌间,美丽乡村入画来。自全国文明城市创建工作开展以来,花园口镇积极响应惠济区委区政府号召,聚焦提升城市精细化管理水平,落实
-
“2023慧享科学城·惠购消费节”启幕3月24日,由重庆高新区改革发展局主办的“2023慧享科学城·惠购消费节”在大学城熙街盛大启幕,本次活动以“花YOUNG
-
今头条!持续为经营主体降低物流成本 今年1至2月河北共减免车辆通行费15.09亿元从河北省交通运输厅获悉,今年以来,河北交通运输系统持续深化“放管服”改革,以打造一流交通运输营商环境为出发点、着力点和落脚点,出台...
-
外强中干是什么生肖外强中干指的是生肖狗。爱叫的狗不咬人,咬人的狗不露齿,所以说吠犬不咬人,外强中干,形容的就是那些虚有其表,虚张声势的人。外强中干是一
-
当前速读:文综是什么科目初中_文综是什么1、文科综合简称“文综”。2、指的是在高考中政治、历史、地理三大科。3、即“3+X+综合”考试中的“综合”,“3”是指语
-
【环球新要闻】裙子太长穿什么好看_长裙怎么搭配比较好呢欢迎观看本篇文章,小勉来为大家解答以上问题。裙子太长穿什么好看,长裙怎么搭配比较好呢很多人还不知道,现在让我们一起来看看
-
最长14天!来宁求职青年可免费住宿3月24日,南京举办“宁青驿站”南京青年人才驿站发布会暨青年人才市情体验活动启动仪式,推出一系列惠及广大青年人才的政策措施,打造“全...
-
环球即时:津沽大地涌春潮丨爱惜城市历史文化遗产来源:求是网策划:闫玉清李达周昭成梁佩韵何雯雯采访:周昭成编导:王蕾摄像:张东制作:夏建刚配音:张映彤统筹:王光煦汤宝兰审核:闫玉清
-
即时看!混凝土养护剂的使用方法1、在混凝土或砂浆抹平后表面没有水分后即可喷洒混凝土养护剂。2、用简易喷浆泵(农用喷雾器或手压泵)就可以喷涂,喷1-3遍,至混凝土表面均与
-
环球信息:晚间公告丨3月24日这些公告有看头3月24日晚间,沪深两市多家上市公司发布公告,以下是第一财经对一些重要公告的汇总,供投资者参考。
-
市场监管总局公布《互联网广告管理办法》|全球即时看App3月24日消息,为切实维护广告市场秩序,保护消费者合法权益,推动互联网广告业持续健康发展,近日,市场监管总局修订发布了《互联网广告管
-
北京这个棚改项目与地铁站一体化建设,下楼即乘地铁6号线北京这个棚改项目与地铁站一体化建设,下楼即乘地铁6号线,棚改,地铁站,地铁口,北京市,轨道交通,地铁6号线
-
股市速华泰证券股票价格递太龙药业拟对3家控股子公司增资扩股 环球信息2025年03月27日报道:太龙药业(600222)拟对3家控股子公司增资扩股3月27日丨太龙药业(600222)发布,
-
快讯丨中韩人寿董秘范宏瑞任职资格获核准 环球观速讯财经网金融讯3月24日,银保监会浙江监管局发布关于范宏瑞任职资格的批复。批复显示,《中韩人寿保险有限公司关于范宏瑞总公司董事会秘书任职资
-
金价涨势难停?偏爱避险“香饽饽”,法兴银行热购黄金|全球看点智通财经APP获悉,由于最近的地缘政治事件,美元的主导地位正在失去动力。法兴银行经济学家在报告中称,去美元化是一个长期的过程,可能会使黄
-
世界焦点!如何安装淋浴房呢?跟小编一起学淋浴房的安装在现代生活当中,很多的人在一天忙碌的工作之后,都会在家里面洗一个热水澡来缓解疲劳,所以,淋浴房的装修就显得的特别的重要,那么,如何安
-
最新快讯!防范洗钱风险 毕节农商银行在行动为进一步强化反洗钱工作效果,营造有利于反洗钱工作的外部环境,加大对洗钱风险的防范和打击力度,近日,毕节农商银行在七星关区
-
东莞虎门电商技能大赛面向全国发布“人才征集令”为积极响应“是人才、进莞来”的引才口号,近日,东莞市虎门镇将举行电商技能大赛,面向全国发布“人才征集令”,广邀各地数字营销技能人才...
-
工信部:锂电行业将迎来快速增长期据央视新闻,工信部相关负责人表示,对于整个锂电行业而言,随着我国碳达峰、碳中和目标的实现,锂电在绿色化转型过程中将起到关
-
全球观天下!郑州古筝培训收费标准_郑州古筝培训1、馨乐艺术教育中心由明日之星音乐艺术培训中心与郑州大学音乐系教育联盟合并而成。2、师资力量雄厚,拥有专、兼职教师60余
-
简普科技品牌介绍_简普互联网2017年11月16日,融360旗下公司NYSE:JT在纽交所成功上市。作为中国专业的移动金融智能平台,我们的使命和愿景
-
全球新资讯:惊蛰节气的含义1、在二十四节气中,惊蛰反映的是自然生物受节律变化影响而出现萌发生长的现象。农耕生产与大自然的节律息息相关,惊蛰节气在农耕上有着相当重
-
天天速递!【纯爱推文】《痴情炮灰不干了[穿书]》甜文 校园 爽文 完结《痴情炮灰不干了[穿书]》主角:谢阮(受)&薄晋(攻)视角:主受作者:连朔字数:38万|共99章(无番外)进度:完结标签:甜文|爽文|...
-
【全球独家】蒙山县气象台发布雷电黄色预警信号【III级/较重】【2023-03-23】蒙山县气象台发布雷电黄色预警信号【III级 较重】【2023-03-23】
-
胖脸女生最佳短发发型2019_胖脸女生最佳短发发型1、立体莲花头,胖脸的女生不适合留长发。试试这种短莲蓬头发型,用头发化妆品就能轻松改变发型!这款发型使用了头发化妆品,使
-
当前速读:【贯彻落实全省、全市公安局长会议精神】乌当公安用态度、力度、温度深耕民生警务【贯彻落实全省、全市公安局长会议精神】乌当公安用态度、力度、温度深耕民生警务
-
青春期4电影在线播放_青春期41、青春期4年底就会上映,已经开始筹拍了,具体上映时间未定。2、中间出什么状况谁也不知道,但肯定不会等太久,这部片一个学