为了理解App是如何进行渲染的,我们必须了解手机硬件是如何工作,那么就必须理解什么是VSYNC
    在讲解VSYNC之前,我们需要了解两个相关的概念:
    Refresh Rate:代表了屏幕在一秒内刷新屏幕的次数,这取决于硬件的固定参数,例如60Hz。
    Frame Rate:代表了GPU在一秒内绘制操作的帧数,例如30fps,60fps。
    GPU会获取图形数据进行渲染,然后硬件负责把渲染后的内容呈现到屏幕上,他们两者不停的进行协作。
    垂直同步VSync - 图1
    不幸的是,刷新频率和帧率并不是总能够保持相同的节奏。如果发生帧率与刷新频率不一致的情况,就会容易出现Tearing的现象(画面上下两部分显示内容发生断裂,来自不同的两帧数据发生重叠)。
    垂直同步VSync - 图2
    垂直同步VSync - 图3
    理解图像渲染里面的双重与三重缓存机制,这个概念比较复杂,请移步查看这里:http://source.android.com/devices/graphics/index.html,还有这里http://article.yeeyan.org/view/37503/304664

    通常来说,帧率超过刷新频率只是一种理想的状况,在超过60fps的情况下,GPU所产生的帧数据会因为等待VSYNC的刷新信息而被Hold住,这样能够保持每次刷新都有实际的新的数据可以显示。但是我们遇到更多的情况是帧率小于刷新频率。

    垂直同步VSync - 图4

    在这种情况下,某些帧显示的画面内容就会与上一帧的画面相同。糟糕的事情是,帧率从超过60fps突然掉到60fps以下,这样就会发生LAGJANKHITCHING等卡顿掉帧的不顺滑的情况。这也是用户感受不好的原因所在。

    作者:Viking_Den
    链接:https://www.jianshu.com/p/75139692b8e6
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。