安卓拥有,iPhone缺失,高刷新率到底能带来什么体验?( 二 )


感光细胞又称感受器细胞 , 是在眼球的视网膜中发现的 , 具有光转化能力的一类特殊神经细胞 。 感光细胞从视野范围内吸收光子 , 然后经一系列特殊复杂的生物化学通路 , 将这些信息以膜电位改变的形式进行信号传导 。 最后 , 视觉系统对这些信号信息进行处理 , 就变成了我们看到的世界 。
可以看出 , 感光细胞的反应是需要时间的 。 为了填补成像过程中的空白画面 , 先前成像的结果就会暂时停留在人脑中 。 一般来说 , 停留的时间约为0.1 -0.4秒 , 因此每秒10到12张的画面已经足够“糊弄”人眼了 。
但是 , 在运动速度较快时 , 这一频率可能就会出现不够用的情况 , 因为动态的细节会出现缺失 , 出现丢帧 , 通俗来说 , 就是卡顿(《蜘蛛侠:平行宇宙》的观感) , 这会导致观看者出现眩晕的症状 。 因此 , 为了保证我们操作手机时的流畅性 , 那么屏幕的刷新率就必须保持在较高水平 。
当然 , 刷新率也不是越高越好 。 如果超过人眼的感知上限 , 那么多出来的刷新率就是多余的 , 人眼并不会识别 , 反而会造成额外的资源浪费 , 得不偿失 。 有人认为人眼的感知上限是60Hz , 但是当使用90Hz或120Hz的刷新率手机时 , 人眼能清楚地感知到流畅的提升 , 因此 , 60Hz上限的说法或许并不准确 。 但是具体上限是多少 , 目前还没有定论 。
此外 , 没有外部支持的高刷新率并没有多大意义 , 用户只有在滑动时才能明显感知 。 对于其他许多使用场景 , 如游戏、视频等 , 在没有适配的情况下仍会以默认刷新率运行 。
屏幕刷新机制
当我们开启手机屏幕时 , 屏幕总会以一定的刷新率显示应用界面信息 。 这一过程简单来说包括3方参与:屏幕、应用程序和系统 。
在安卓4.1之前 , 安卓手机的刷新流程是线性的 。 即应用程序进行场扫描绘制画面 , 然后返回给屏幕显示 。 这一过程就像去超市购物 , 顾客(屏幕)向商场(应用程序)购买商品(画面) 。 不同的是 , 商场会储备很多商品 , 但应用程序不会 , 因此有时可能会出现画面“缺货”的情况 。
在4.1版本之后 , 安卓通过缓存机制解决了这一问题 。
应用程序会向系统申请一块缓存 , 系统通过后 , 应用程序就拿到了这块缓存的“使用权” 。 随即 , 应用程序就会在这块缓存内进行场扫描 , 以便确定每个像素点需要显示的内容 。 绘制完成后 , 应用程序就这块缓存提交给系统 , 系统随即通过屏幕显示出来 。
安卓拥有,iPhone缺失,高刷新率到底能带来什么体验?文章插图
刷新机制(图源:))
事实上 , 一个缓存块是不够的 , 有时可能会出现上一帧画面刚更新了一半 , 下一帧画面就出现了的情况 , 这被称作画面撕裂(tearing) , 如下:
安卓拥有,iPhone缺失,高刷新率到底能带来什么体验?文章插图
画面撕裂 (图源:)
为了避免这种现象 , 安卓采用的是双缓存技术:一块缓存用于系统向其中写入画面 , 另一块则用于屏幕显示 , 当前一块中的画面准备就绪后 , 屏幕才会提取其中的画面进行显示 。
除了添加缓冲区 , 还可以通过“加锁”的方式解决这种问题 , 也就是在当前画面显示完毕之前将下一画面“锁住” , 当前画面显示完毕之后 , 屏幕才能显示下一画面 。 这和许多游戏中“垂直同步”设置的作用是一样的 , 都是为了防止出现画面撕裂 。
对60Hz刷新率的手机而言 , 上述过程全部发生在16ms以内 , 90Hz和120Hz下系统的反应时间分别只有11.1ms和8.3ms 。 场扫描绘制画面都是由手机CPU或者GPU进行的 , 因此 , 对于瞬时大量计算 , 手机的处理器也就显得很重要 。
刷新率越高 , 手机画面观感也就越流畅 。 安卓手机一直被吐槽其动画没有iPhone流畅 , 原因之一就在于其过渡动画被限制在了30Hz , 而苹果的动画基本保持在60Hz , 后者的观感自然也就更加流畅 。