上一篇讲到了计算机图形的渲染机制,那么对于iOS设备来说具体是怎么渲染?

IOS图形渲染流程

1.App通过调用CoreAnimation、

CoreGraphics等图形渲染框架提供的接口来触发图形渲染操作,

2.图形渲染框架将渲染数据交由OpenGL ES/Metal底层库,然后由OpenGL ES/Metal驱动GPU做渲染,最后显示到屏幕上。具体如下图:

ios图片预渲染 ios图片渲染流程_图形渲染

iOS图形渲染框架

1.UIKit

UIKit 是 我们最常用的框架,这个没有什么好说的。

2.Core Animation

Core Animation  是我们做动画常用的框架,源自于 Layer Kit,其中里面有个很重要概念(CALayer),这个等下再讲。

3.Core Graphics

Core Graphics 基于 Quartz 高级绘图引擎,主要用于运行时绘制图像。例如基于路径的绘图,转换,渐变和阴影,图像数据管理,图像创建和图像遮罩等。

4.Core Image

Core Image  用得不多,主要是用来处理 运行前创建的图像 的。Core Image 框架拥有一系列现成的图像过滤器,能对已存在的图像进行高效的处理。

5.OpenGL ES

OpenGL ES是OpenGL 的子集,而OpenGL是第三方针对视频,图像/图形处理的库。OpenGL是直接操作GPU的,它的代码一般由各GPU厂商负责开发维护.

6.Metal

Metal是苹果公司在OpenGL ES基础上进行二次封装的视频、图形/图像库。

CALayer

在CoreAnimation框架中有一个很重要的概念:CALayer。

它的作用是把我们界面上看到的东西,都转化成独立CALayer,然后统一处理并发送到OpenGL ES/Metal底层库。

我们创建的每一个UIView都有一个CALayer,它是UIView的基础。

UIView和CALayer有一些区别的:

1. UIView侧重内容的管理,CALayer侧重内容的绘制。

2.UIView继承NSResponse,能响应事件,而CALayer不能响应事件.

3.UIView显示的内容都依赖于CALayer,CALayer的显示需要UIView这个容器。

CALayer为什么又能实现显示呢?

答案就是:CALayer基本等同于纹理,这个纹理就是GPU的基本概念了。其实质就是一块contents的缓冲区,可以存放位图(Bitmap)信息。通过CALayer,打通了上层界面和GPU之间的联系。

参考资料:

iOS 图像渲染原理