美文网首页学编程
CoreAnimation 渲染流程

CoreAnimation 渲染流程

作者: Henry________ | 来源:发表于2020-07-08 01:49 被阅读0次

Core Animation 渲染流程

阅读时间3-5分钟

前言

依旧老规矩带着问题来阅读
CoreAnimation 的职责是什么?

流程图

这是苹果官方提供的大量图片中的一张

流程图的解读

整个流程一共有下面几个步骤:

  • Handle Events
    这个过程中会先处理交互事件,这个过程中有可能会需要改变页面的布局和界面层次;这个很好理解。

  • Commit Transaction
    此时app会通过CPU处理显示内容的前置计算,比如布局计算、图片解码等任务,接下来会进行详细的讲解。之后将计算好的图层进行打包发给 Render Server。
    Commit Transaction 这部分中主要进行的是:Layout、Display、Prepare、Commit 等四个具体的操作。

    • Layout 构建视图,计算视图布局
    • Display 绘制视图层(下面提到的图层)


    这里需要注意的是Core Graphics,这个阶段主要是通过它来完成的,但并不是真正的显示,而是得到图元 primitives 数据。这部分是在CPU中完成的,而后续会通过GPU来得到位图(bitmap)
    但是有一个例外:drawRect:如果开发者重写了这个方法就会在CPU中将layer通过Core Graphics直接处理成bitmap,就不会在通过GPU来完成bitmap的渲染,这里就涉及到一个概念:离屏渲染

    • Prepare 图片解码和转换
    • Commit 将处理好的图层打包发送给Decode
  • Decode
    打包好的图层被传输到 Render Server 之后,首先会进行解码。注意完成解码之后需要等待下一个 RunLoop 才会执行将具体操作绘制(OpenGL/Metal的操作)转发给下个流程Draw Calls
    以上三个步骤都是在CPU中完成的。

  • Draw Calls
    解码完成后,Core Animation 会调用下层渲染框架(比如 OpenGL 或者 Metal)的方法进行顶点着色器、图元装配、光栅化、片元着色器、混合等渲染工作,进而调用到 GPU。

  • Render
    这一阶段主要由 GPU 进行渲染。

  • Display
    显示阶段,需要等 render 结束的下一个 RunLoop 触发显示。

更多和渲染有关的可以查看: iOS 渲染原理解析

相关文章

  • CoreAnimation 渲染流程

    Core Animation 渲染流程 阅读时间3-5分钟 前言 依旧老规矩带着问题来阅读CoreAnimatio...

  • iOS绘制与渲染--渲染流程

    视图渲染框架 UIKit是常用的框架,显示、动画都通过CoreAnimation。CoreAnimation是核心...

  • CoreAnimation渲染流水线

    三、CoreAnimation渲染流水线 HandleEvents:事件处理 CoreAnimaion渲染流水线的...

  • CoreAnimation解析及中高级动画实现

    一.CoreAnimation介绍 CoreAnimation是一套图像渲染和动画基础框架,其在iOS和OSX平台...

  • 九 CoreAnimation 渲染

    1. 职责 每个视图对象都有一个Core Animation对象,它是一个CALayer类实例,Core Anim...

  • 离屏渲染

    1、什么是离屏渲染 GPU的渲染操作主要由CoreAnimation中的Render Server模块负责。Ren...

  • iOS 列表性能优化思路

    一 原理CoreAnimation 有一个基础的渲染 pipeline: 数据的基本流向是: Applicatio...

  • iOS开发中的动画

    00 动画架构 谈 UIKit 和 CoreAnimation 在 iOS 渲染中的角色https://mp.we...

  • 四、离屏渲染

    离屏渲染与正常渲染 屏幕上最终显示的数据有两种加载流程 正常渲染加载流程 离屏渲染加载流程离屏渲染与正常渲染 常⻅...

  • OpenGL-05-屏幕卡顿原因及iOS下的渲染

    今天我们来看一下:图片撕裂、掉帧、屏幕卡顿的原因、iOS下的渲染框架、CoreAnimation的渲染流水线、UI...

网友评论

    本文标题:CoreAnimation 渲染流程

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