大家可以在iPhone 6/7/8 Plus上面截屏,然后把截图导入电脑,查看截图的分辨率就会看到是2208x1242,而这三款5.5英寸大屏手机的分辨率都是1920x1080,就是说iPhone 6/7/8 Plus的处理器渲染的每一帧画面都是2208x1242的,但苦于手机的屏幕分辨率只有1920x1080,于是画面显示在屏幕上之前,要先缩小成1080P的画幅(大概缩小了13%),如下图所见,缩小前的效果是浅灰色+深灰色区域,缩小后的效果是红色画出来的深灰色部分区域。
这样做的坏处显而易见,第一,处理器在内存里渲染2K分辨率的画面,但却最终以1080P呈现,浪费了性能,大家都记得当初6P和6都是1G内存,实际图形跑分6高于6P的结果。第二,2208x1242缩小13%,变成1920x1080,使得屏幕的每个像素点不能与处理器渲染出来的画面一一对应,无法做到Pixel Perfect,可能会带来一些显示瑕疵,譬如:抖动。
关于缩放带来的抖动,大家可以看下面的两张图。
第一张图是正常显示的动图,第二张图就是缩放后带来的抖动瑕疵,注意看人物在轻微的左右抖动。图1就相当于处理器渲染出来的画面,图2就是缩放后投射在显示器上面的效果,究其原因,简单点儿说就是设计师设计的3x3=9个像素显示的动图,你非要强制放大成4x4=16个像素去显示,由于像素点和要显示的素材无法一一对应,动画的帧与帧之间的盈亏互补现象就会导致动画抖动。当然,iPhone的画面刷新率根本不会像上面两张动图那样慢,苹果的优化又堪称一流,所以肉眼并不会看到任何异样,我用上面两张帧率非常低的动图只是想告诉大家神马是缩放带来的画面抖动。
至于苹果为什么没有在iPhone 6/7/8 Plus上面使用完全贴合处理器渲染画面的2208x1242分辨率的2K显示屏,说法众多,有说2K屏幕功耗太高,也有说供应商不愿意制造2208x1242如此奇葩分辨率的LCD显示屏,因为这样可能无法大规模生产,但不管神马原因,苹果已经使用这种不完美的折衷显示方案四年了。
看上面的那张表格,如果你是开发者或者相关技术人员,就能看懂上图的信息,看不懂也没有关系,你只要知道,这种尴尬的问题在iPhone X上面终于得到了解决,iPhone X屏幕的分辨率是2436x1125,完美贴合A11处理器在iPhone X的内存里渲染出来的每一帧画面的分辨率,你不会再看到画面里的每一个元素相比在设计师那里的原始设计图纸,被缩小了13%,而是Pixel Perfect。这就是说iPhone X上面显示的才是真正的@3X倍清晰度,而iPhone 6/7/8 Plus上面由于缩小13%后再渲染到屏幕,实际只有@3X的87%=@2.6X倍清晰度。