IOS屏幕卡顿原理

2020-07-05  本文已影响0人  东旭39

屏幕撕裂

iOS设备保证画面流畅性需要尽量保持在60fps,即每秒需要更新60帧的画面,那么一帧画面就需要GPU和CPU在16.7ms内准备好要显示的数据。
当CPU+GPU处理时间超过16.7ms,由于垂直同步信号VSnyc的作用加在两帧中间,显示器不会去渲染只准备了一半的数据,不然会造成屏幕撕裂现象,因此屏幕中仍显示的是当前帧的数据,造成卡顿的现象。

苹果为了优化卡顿使用了垂直同步Vsync + 双缓冲区

掉帧

垂直同步Vsync信号+ 双缓冲区,解决了屏幕撕裂的问题。但是有会出现新的问题,由于一帧的计算时间超过16.7ms,则显示器不会渲染缓冲区中未准备好的渲染数据,仍保留当前的帧数据,从而造成掉帧现象。
因此又提出了三缓存区的方案。cpu和GPU闲置时间准备渲染数据


im1.png

屏幕卡顿的原因

  1. CPU/GPU 渲染流水线耗时过长,掉帧
  2. 垂直同步VSync + 双缓冲区,以掉帧作为代价解决屏幕撕裂
  3. 三缓冲区:合理使用CPU/GPU减少掉帧次数

iOS中滑动优化方案

上一篇 下一篇

猜你喜欢

热点阅读