从加载到显示,主过程在主过程中显示(主要是CPU,BUS,GPU和DISPASION之间的相互作用)
:解码图片,计算框架之类的信息,您需要通过公共汽车向GPU绘制纹理图片
:混合纹理,一个顶点转换计算,像素的填充计算,渲染到框架缓冲区
:垂直同步信号V-sync,水平同步信号H-Sync(因为电子枪逐条扫描线,最多提到的是垂直同步新信号)
:显示系统通常会引入两个帧缓冲区,并且双缓冲区机构(GPU性能更高,甚至绘制了三个缓冲区)。
单个缓冲机制:较早的缓冲区意味着,即GPU渲染完成后,显示缓冲区将直接更新。这个问题是,一旦电子枪显示上一个帧中图像的一部分,缓冲区区域就会发生变化,然后下一个显示框架框架的下半部分,因此将撕裂屏幕屏幕(上一个帧将图片的一部分和下一帧的一部分混合在一起显示;
双缓冲区:更多的备用缓冲区,即,GPU渲染保存在缓冲区中,等待显示器的垂直同步信号(在当前屏幕框架之后显示电子枪处理后),接收同步信号后,缓冲区立即交换,Sovoid屏幕撕裂,但也会出现问题。发送垂直信号时,GPU尚未呈现,因此图片不会更改。当下一个垂直同步信号越过时,GPU可能连接到框架。当前框架被渲染,当前的图像框架将被图像覆盖,因此可能发生框架损失
:上面提到的公共汽车实际上是我们的主板。显示屏还通过线路连接到GPU。如果CPU已连接,则基本显示集合(GPU集成在CPU上)。它与显示有关。相互作用是cpu?gpu,gpu?显示
1.假设我们使用该方法加载本地缓存图片,而压缩后加载的图片不是图片
2.对获得的分配
3.捕获中文隐藏类型已改变图形树的变化
4.下一次主线程即将到来时,将提交给隐藏的表单。该过程可能会在图片中解压缩,并且由于图片是否对齐和其他因素的影响,此操作可能涉及以下或所有步骤:
从此步骤来看,减压过程已上述,因此,当许多未被解压缩的图片加载到列表中时,CPU可能会带有瓶颈,尤其是快速滑动,这可能会导致切口,这基本上是三方,基本上是处理,大图已加载和优化)
对于已解压缩的图片,该系统将在次要时间内不会被解压缩,而是直接使用它。当然
图片的解压缩在CPU上,需要大量计算,这是耗时的,因此无法对其进行解压缩。一定不是。在理解之前
因此,在渲染到屏幕之前,需要将压缩位图转换为图片的原始数据,以便以后执行渲染操作
由于无法避免解压缩,因此必须有一个解决方案,因此在CPU中执行解压缩过程,并且在主线程执行中未指定。然后,当前的行业解决方案是在本地获得图片或网络。
什么时候
强制解压缩的原理是重新绘制图片以获取一个新的减压位图。在它们中,使用的核心功能是CGBITMAPCONTEXTCREATE:
:如果不是零,则应指向至少bytesperrow *高度字节的内存;如果是空的,则系统将自动分配并释放我们所需的内存,因此通常指定为NULL;
:位置图的宽度和高度,分配的像素宽度和像素高度是图片的值;
:在像素的每个颜色组件中使用的位数,在RGB颜色空间中指定8;
:在位图的每一行中使用的字节数,大小至少为宽度 *字节每个像素字节。当我们指定0/NULL时,系统将不会自动计算为我们,但也可以优化缓存线对准。
:这是我们之前提到的颜色空间。通常,可以使用RGB;
:位图的布局信息。
以下是代码的减压部分。通过重新绘制的方法,获得解压缩后的新图片cgimage
可以说,解压缩和重新启动的过程总共分为三个步骤
1.仅当确定显示图片文件要显示时,CPU才会对齐,因为解压缩是一件非常消耗的事情。
2.将图片渲染到屏幕的过程:读取文件 - >计算框架 - >图片解码 - >解码纹理图片位图数据用于GPU-> gpu以获取图片帧 - >顶点转换计算 - > Gridization-> Gridization->>根据纹理坐标获取每个像素的颜色值(如果出现透明值,则需要每个像素点的颜色*透明值) - >呈现到屏幕上的帧缓存区域 - >呈现到屏幕上
原始:https://juejin.cn/post/7096153631678398494