APP&游戏需要关注闪避卡顿吗?

  <>节   <>节   

第一部分:FrameTime   

  <>节   <>节   <节>   <>节   <>节               节   <节>   <>节   

  <强> FrameTime的定义:两帧画面间隔耗时(也可简单认为单帧渲染耗时)。

     

对于FrameTime和卡顿是否有关联吗?请看下图的案例图示:

  <>节    APP&游戏需要关注闪避卡顿吗?”>
  <br/>
  <节> </节> </节>
  <>节
  <p>,,,,从图中可看出画面中B帧在GPU渲染耗时(帧生成时间)大于显示器刷新间隔,占用两次显示器刷新耗时。也就是说有一次画面没刷新。当出现多次没有画面刷新(也就是说画面没变化),则可能是一次卡顿。</p> </节>
  <>节
  <p>
  <强>
  </强>玩家用户真正看到的是屏幕新画面刷新间隔时间,而不是eglSwapbuffers-GPU渲染完成(并未有提交屏幕显示)间隔时间,所以后面所提到Frametime统统指的是屏幕Display-Frametime。</p> </>节
  <>节
  <p>
  <强> PerfDog工具优点:</强> PerfDog统计的FPS和Frametime都是用户看到的屏幕显示新画面真实刷新FPS和帧耗时,所以大家可以直接通过Frametime来判断测试过程中是否出现卡顿。</p>
  </>节
  <>节
  <p>第二部分:FPS </p>
  <>节
  <节> </节>
  <>节
  <>节
  
  
  
  
  </>节
  <节> </节> </节> </节> </节>
  <>节
  <p>
  <强> FPS的定义:</强>帧率(1秒内平均画面刷新次数)。</p>
  <p>
  <>强平均帧</强>
  <强>率:</强>传统常说的FPS, 1秒内平均画面刷新次数。</p>
  <p>
  <>强瞬时帧率</强>
  <强>:</强>单帧耗时FrameTime算出来实时帧,每一帧画面刷新耗时换算出的实时帧率。</p>
  
  <p>画面渲染流程图如下,每一帧FrameTime。</p> </节>
  <>节
  <img src=   <>节   

,,,,上图左边帧率高,反而看起来有一卡一顿的现象,这就是微口吃(微型口吃)导致的,左边FrameTime如下图:

  <>节    APP&游戏需要关注闪避卡顿吗?”>
  <br/>
  <节> </节> </节>
  <>节
  <p>,,,,通过FrameTime可以看的出,左边高帧率FPS=40帧率中出现一次FrameTim>=117毫秒,理论平均FrameTime=25 ms。所以非均匀渲染,虽然帧率高达40岁,但依然觉得非常卡。</p>
  
  <p>右边低帧率30帧运行FrameTime如下图:</p> </节>
  <>节
  <img src=APP&游戏需要关注闪避卡顿吗?