在iOS中使用 Core Graphics、Core Animation、Core Image 等框架来绘制可视化内容,这些软件框架相互之间也有着依赖关系。这些框架都需要通过 OpenGL 来调用 GPU 进行绘制,最终将内容显示到屏幕之上。
iOS下的渲染框架.png本文将介绍 iOS 中 CoreAnimation在渲染中充当的角色
Core Animation 是一个复合引擎,其职责是 尽可能快地组合屏幕上不同的可视内容,这些可视内容可被分解成独立的图层(即 CALayer)。从本质上而言,CALayer 是用户所能在屏幕上看见的一切的基础。
Core Animation位于AppKit和UIKit之下,紧密集成到Cocoa和Cocoa Touch的视图工作流中。当然,Core Animation也有接口,可以扩展应用程序视图所暴露的功能,让你对应用程序的动画有更细粒度的控制
iOS下的CoreAnimation.png通过上面的介绍,我们知道了 CALayer 的本质,那么它是如何调用 GPU 并显示可视化内容的呢?下面我们就需要了解下 Core Animation 流水线的工作原理。
CoreAnimation 渲染管线.pngApp本身并不负责渲染,渲染由独立进程Render Server负责
App 通过 IPC 将渲染任务及相关数据提交给 Render Server。Render Server 处理完数据后,再传递至 GPU。最后由 GPU 调用 iOS 的图像设备进行显示。
Core Animation 流水线的详细过程如下:
-
首先,App处理事件(HandleEvents:事件处理)
-
其次,App通过CPU完成对显示内容的计算(如:视图创建、布局、图片解码、文本绘制)
-
在完成以上两步之后,App对图层进行打包,在下一个Runloop到来时,将打包数据发送给Render Server(即:完成一次Commit Transaction)
-
Render Server主要执行OpenGL、CoreGraphice程序,OpenGL调度GPU
-
GPU在物理层上完成渲染流程(顶点数组,顶点着色器,片元着色器)
-
最后:等到下一个Runloop,进行显示
网友评论