谈谈渲染中CoreAnimation的以及离屏渲染

444 阅读1分钟

渲染中的CoreAnimation

CoreAnimation的作用在苹果中的解释为

Render,compose, and animate visual elements.

它本质上可以理解为一个符合引擎,主要负责;渲染、构图和实现动画。

CoreAnimation中的content属性

是提供内容的对象,可以是CGImageRef,也可以是,也可以诶是NSImage CoreAnimation 工作原理:

  • 首先,由 app 处理事件(Handle Events),如:用户的点击操作,在此过程中 app 可能需要更新 视图树,相应地,图层树 也会被更新。
  • 其次,app 通过 CPU 完成对显示内容的计算,如:视图的创建、布局计算、图片解码、文本绘制等。在完成对显示内容的计算之后,app 对图层进行打包,并在下一次 RunLoop 时将其发送至 Render Server,即完成了一次 Commit Transaction 操作。
  • Render Server 主要执行 Open GL、Core Graphics 相关程序,并调用 GPU GPU 则在物理层上完成了对图像的渲染。
  • 最终,GPU 通过 Frame Buffer、视频控制器等相关部件,将图像显示在屏幕上

离屏渲染

离屏渲染是在屏幕外开辟一个缓冲区来进行渲染操作,其渲染流程如下图所示:

离屏渲染原因 * 毛玻璃效果 * 光栅化 * 圆角触发

离屏渲染逻辑

当sublayer 会知道屏幕上后,就会将sublayer从帧缓存区中移除,宠儿节省空间。