OpenGL/OpenGL ES学习记录

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

2019-05-13  本文已影响0人  jakeXu

图片从文件加载到渲染到屏幕上是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获取获取图片的坐标

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读