【IOS 知识点】界面渲染流程

IOS 界面渲染流程

iOS渲染视图的核心是Core Animation

[图片上传失败...(image-307dfc-1617157274006)]

从中可以看到,界面显示的整体流程如下:
1、CoreAnimation提交会话,包括自己和子树(view hierarchy)的layout状态等;
2、RenderServer解析提交的子树状态,生成绘制指令;
3、GPU执行绘制指令;
4、显示渲染后的数据;

具体来说:

CPU阶段

布局(Frame)
显示(Core Graphics)
准备(QuartzCore/Core Animation)
通过IPC提交(打包好的图层树以及动画属性)

OpenGL ES阶段

生成(Generate)
绑定(Bind)
缓存数据(Buffer Data)
启用(Enable)
设置指针(Set Pointers)
绘图(Draw)
清除(Delete)

GPU阶段

接收提交的纹理(Texture)和顶点描述(三角形)
应用变换(transform)
合并渲染(离屏渲染等)

  • 首先一个视图由CPU进行Frame布局,准备视图和图层的层级关系,查询是否有重写drawRect:或drawLayer:inContext:方法。
  • CPU会将处理视图和图层的层级关系打包,通过IPC(内部处理通信)通道提交给渲染服务,渲染服务由OpenGL ES和GPU组成。
  • 渲染服务首先将图层数据交给OpenGL ES进行纹理生成和着色。生成前后帧缓存,再以设备的VSync信号和CADisplayLink为标准,进行前后帧缓存的切换。
  • 将最终要显示在画面上的后帧缓存交给GPU,进行采集图片和形状,运行变换,应用纹理和混合。最终显示在屏幕上

app从点击屏幕(硬件)到完全渲染的过程:

  • 首先一个视图由CPU进行Frame布局,准备视图和图层的层级关系。
  • CPU会将处理视图和图层的层级关系打包,通过IPC(内部处理通信)通道提交给渲染服务,渲染服务由OpenGL ES和GPU组成。
  • 渲染服务首先将图层数据交给OpenGL ES进行纹理生成和着色。生成前后帧缓存,再设备的VSync信号和CADisplayLink为标准,进行前后帧缓存的切换。
  • 将最终要显示在画面上的后帧缓存交给GPU,进行采集图片和形状,运行变换,应用纹理和混合。最终显示在屏幕上。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 在最近的面试中,我发现一道面试题,其考点是:围绕iOS App中一个视图从添加到完全渲染,在这个过程中,iO...
    筑梦师Winston阅读 24,534评论 26 197
  • 面试题 本文可为以下面试题提供参考: app从点击屏幕(硬件)到完全渲染,中间发生了什么?越详细越好 要求讲到进程...
    一川烟草i蓑衣阅读 2,755评论 0 0
  • iOS渲染视图的核心是Core Animation 从中可以看到,界面显示的整体流程如下:1、CoreAnimat...
    hehc08阅读 8,781评论 0 5
  • 一、页面渲染流程第一步、更新视图树、同步更新图层树第二歩、CPU计算要显示的内容,包括视图的创建(设置Layer的...
    TaoGeNet阅读 3,411评论 0 0
  • 图形渲染技术栈 如图,App 使用Core Graphics、Core Animation、Core Image ...
    卖馍工程师阅读 3,332评论 0 2

友情链接更多精彩内容