当前位置: 首页 > 网络应用技术

讨论从减压到渲染过程的iOS中的图片

时间:2023-03-07 11:22:55 网络应用技术

  从加载到显示,主过程在主过程中显示(主要是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