整体技术层级
注意:这几个层级我们平常可能多少会接触到,查看文档大致了解下原理。
大致流程如下:
- 首先,由 app 处理事件(Handle Events),如:用户的点击操作,在此过程中 app 可能需要更新 视图树,相应地,图层树 也会被更新。
有时候基于UIView做的动画
- 其次,app 通过 CPU 完成对显示内容的计算,如:视图的创建、布局计算、图片解码、文本绘制等。在完成对显示内容的计算之后,app 对图层进行打包,并在下一次 RunLoop 时将其发送至 Render Server,即完成了一次 Commit Transaction 操作。
Commit Transaction之前的操作
-
Render Server 主要执行 Open GL、Core Graphics 相关程序,并调用 GPU,下图OpenGL 主要渲染步骤
一个用来渲染图像的 OpenGL 程序主要可以大致分为以下几个步骤:
设置图元数据
着色器-shader 计算图元数据(位置·颜色·其他)
光栅化-rasterization 渲染为像素
fragment shader,决定最终成像
其他操作(显示·隐藏·融合)
- GPU 则在物理层上完成了对图像的渲染。
-
最终,GPU 通过 Frame Buffer、视频控制器等相关部件,将图像显示在屏幕上如下图
最后3,4,5几个步骤流程图
性能调优
知道原理我们可以针对可以控制的会影响CPU GPU 的步骤调优,这里我们不是无脑的调优,我们需要用上Instrument工具。以后我们会对每个步骤调优进行介绍。
参考链接:
iOS 图像渲染原理
iOS 图像渲染原理
深入理解 iOS Rendering Process
界面渲染的整体流程
UI绘制原理
WWDC:Advanced Graphics and Animations for iOS Apps