iOS渲染

VSync:

  • iOS渲染由VSync信号驱动。
  • VSync有硬件始终驱动,频率为60hz。
  • VSync通过mach port通知APP的Runloop(可能通过调用CADisplayLink)。

 

APP内流程:

Core Animation(CA)在Runloop中注册 BeforeWaiting(即将休眠)和 Exit(即将退出)两个Observer(OB)。

OB收到消息后会通知CA更新内容,并推到缓冲区等待GPU调用。如:CADisplayLink回调后Runloop休眠前会调用BeforeWaiting OB。

 

CA & CG(core graphic/Quartz)

CG在主线程使用CPU渲染。

CA由ES驱动,不在主线程,异步绘图,GPU渲染。

 

On-Screen:

使用当前屏幕缓冲区。

Off-Screen:

  1. 开辟一个新的缓冲区。
  2. 使用CG生成一张Bitmap。如果UIView实现了drawRect方法,就会生成一张视图大小*scale的一张Bitmap,所以不要有空的drawRect方法。
  3. shouldRasterize(光栅化)、mask(遮罩)、shadow(阴影)、anti-aliasing(抗锯齿)、group opacity(不透明)会引起Off-Screen。

  开销大:

   创建缓冲区。

  上下文切换。

  

 

posted on 2015-12-07 19:41  gjcat88  阅读(307)  评论(0编辑  收藏  举报

导航