iOS相关技术原理

iOS图片加载渲染过程

2021-09-16  本文已影响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 操作,并且它默认是在主线程中执行的。那么当需要加载的图片比较多时,就会对我们应用的响应性造成严重的影响,尤其是在快速滑动的列表上,这个问题会表现得更加突出。

上一篇 下一篇

猜你喜欢

热点阅读