iOS 离屏渲染

什么是离屏渲染?

离屏渲染是基于GPU层面上的,指GPU在当前屏幕缓冲区外开辟了一个缓冲区,进行渲染操作。

当设置某些UI图层属性时候,如果指定为被未预合成之前,不能直接显示在屏幕上的时候,就触发了离屏渲染。

何时触发

  • 圆角(当和 makeToBounds 或者 clipToBounds 同时使用)
  • 图层蒙版
  • 阴影
  • 光栅化
  • 光栅化(Rasterization)是把顶点数据转换为片元的过程,具有将图转化为一个个栅格组成的图象的作用,特点是每个元素对应帧缓冲区中的一像素。(应用:较为广泛的应用于深度学习卷积神经网络的结构中)

为何要避免离屏渲染

离屏渲染发生在GPU层面上,因为离屏渲染使GPU触发Opengl多通道渲染管线,产生额外开销,所以要避免。 在触发离屏渲染时候,会增加GPU工作量,增加GPU工作量,可能会导致GPU和CPU工作耗时的总耗时超出Vsync信号(16.7毫秒)时间,导致UI卡顿或者掉帧。

离屏渲染会创建新的渲染缓冲区,导致内存上的开销,有多通道渲染管线,最终要把多通道的渲染结果进行合成,所有会有上下文的切换,就有 GPU 的额外开销,那么可能就会导致 UI 的卡顿和掉帧

results matching ""

    No results matching ""