美文网首页iOS相关技术原理
iOS图片加载渲染过程

iOS图片加载渲染过程

作者: 孤城一抹霞 | 来源:发表于2021-09-16 15:28 被阅读0次

    一. CPU、GPU协同工作

    1.CPU:计算试图frame、图片解码、将需要绘制的纹理图片通过数据总线交给GPU
    2.GPU:纹理混合、顶点变换计算、像素点填充计算、渲染到缓冲区
    3.时钟信号:垂直同步信号V-Sync/水平同步信号H-Sync
    4.iOS双设备缓冲机制:显示系统引入两个帧缓冲区、双缓冲机制

    二. 图片加载流程

    1.使用+imageWithContentsOfFile:方法从磁盘中加载一张图片,此时图片还未解压缩
    2.将生成的UIImage赋值给UIImageView
    3.一个隐式的CATransaction捕获到UIImageView图层树的变化
    4.主线程下一个runloop到来时,Core Animation提交隐式的transaction,对图片进行copy
    · 分配内存缓冲区用于管理文件 IO 和解压缩操作
    · 将文件数据从磁盘读到内存中
    · 将压缩的图片数据解码成未压缩的位图形式,这是一个非常耗时的 CPU 操作
    · Core AnimationCALayer使用未压缩的位图数据渲染 UIImageView 的图层
    · CPU计算好图片的Frame,对图片解压之后.就会交给GPU来做图片渲染
    5.渲染流程
    GPU获取获取图片的坐标
    将坐标交给顶点着色器(顶点计算)
    将图片光栅化(获取图片对应屏幕上的像素点)
    片元着色器计算(计算每个像素点的最终显示的颜色值)
    从帧缓存区中渲染到屏幕上

    图片的解压缩是一个非常耗时的 CPU 操作,并且它默认是在主线程中执行的。那么当需要加载的图片比较多时,就会对我们应用的响应性造成严重的影响,尤其是在快速滑动的列表上,这个问题会表现得更加突出。

    相关文章

      网友评论

        本文标题:iOS图片加载渲染过程

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