美文网首页
iOS界面渲染机制

iOS界面渲染机制

作者: hehc08 | 来源:发表于2019-02-17 12:06 被阅读0次

iOS渲染视图的核心是Core Animation


image.png

从中可以看到,界面显示的整体流程如下:
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,进行采集图片和形状,运行变换,应用纹理和混合。最终显示在屏幕上。

相关文章

  • iOS面试题大全

    iOS面试题大全-点亮你iOS技能树 iOS 事件处理机制与图像渲染过程 iOS界面渲染流程分析 wechat ...

  • iOS 事件处理机制与图像渲染过程

    iOS 事件处理机制与图像渲染过程iOS开发-视图渲染与性能优化iOS 保持界面流畅的技巧YYAsyncLayer...

  • iOS界面渲染机制

    iOS渲染视图的核心是Core Animation 从中可以看到,界面显示的整体流程如下:1、CoreAnimat...

  • 自底向上—iOS界面优化(第一话)

    交互式图形显示系统渲染机制 对iOS应用进行界面响应速度上的优化,首先需要了解iOS系统的渲染机制,本文是本系列文...

  • iOS 事件处理机制与图像渲染过程

    iOS 保持界面流畅的技巧 iOS 处理图片的一些小 Tip iOS 事件处理机制与图像渲染过程

  • 性能优化

    iOS 保持界面流畅的技巧 iOS开发-视图渲染与性能优化

  • Qml界面渲染机制

    渲染层次: 渲染循环分三种,basic, windows, and threaded,其中Basic和Window...

  • iOS 界面渲染

    尝试和大家一起探讨以下问题: view绘制渲染机制和runloop什么关系? 所谓的列表卡顿,到底是什么原因引发的...

  • 『转』iOS 事件处理机制与图像渲染过程

    本文内容系全文转载自微信开发团队的《iOS 事件处理机制与图像渲染过程》 目录 iOS 事件处理机制与图像渲染过程...

  • iOS 界面绘制渲染的流程

    参考文档和资料 Demo 流程图 参考链接 界面渲染的整体流程 界面渲染续之CALayer的显示流程 iOS7编程...

网友评论

      本文标题:iOS界面渲染机制

      本文链接:https://www.haomeiwen.com/subject/jckgeqtx.html