美文网首页
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界面渲染机制

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