美文网首页OpenGL/OpenGL ES学习记录
理解图⽚从文件到渲染屏幕的过程

理解图⽚从文件到渲染屏幕的过程

作者: jakeXu | 来源:发表于2019-05-13 16:14 被阅读0次

    图片从文件加载到渲染到屏幕上是CPU和GPU协作完成的

    如下图所示:

    图片显示原理

    CPU加载图片原始数据,并解压缩,把解码后的图片信息通过总线传给GPU。

    GPU进行纹理混合,顶点变换与计算,像素点的填充与计算,输出到帧缓冲区。

    最后由帧缓冲区渲染到屏幕上。

    下面举个例子具体说明图片从文件到屏幕的工作流程:

    1、当我们使用+imageWithContentsOfFile:方法加载图片文件时,这个时候图片还是压缩的二进制文件。

    2、当UIImage对象赋值给UIImageView时,CATransaction捕获到图层树的变化。

    3、在主线程的下一个 runloop 到来时,Core Animation 提交了这个隐式的 transaction ,这个过程可能会对图片进行 copy 操作,而受图片是否字节对齐等因素的影响,这个 copy 操作可能会涉及以下部分或全部步骤:

    分配内存缓冲区用于管理文件 IO 和解压缩操作;

    将文件数据从磁盘读到内存中;

    将压缩的图片数据解码成未压缩的位图形式,这是一个非常耗时的 CPU 操作;

    Core Animation中的CALayer使用未压缩的位图数据渲染UIImageView的图层。

    最后CPU计算好图片的Frame,对图片解压之后就会交给GPU来做图片渲染

    4、在GPU中进行渲染

    GPU获取获取图片的坐标

    将坐标交给顶点着色器(顶点计算)

    将图片光栅化(获取图片对应屏幕上的像素点)

    片元着色器计算(计算每个像素点的最终显示的颜色值)

    从帧缓存区中渲染到屏幕上

    相关文章

      网友评论

        本文标题:理解图⽚从文件到渲染屏幕的过程

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