美文网首页
UI离屏渲染

UI离屏渲染

作者: Stago | 来源:发表于2020-06-02 17:13 被阅读0次
  • 什么是离屏渲染,你对离屏渲染是怎么理解的?

先看在屏渲染概念:


在屏渲染

可以说在屏渲染指的GPU层面的一个概念。那么离屏渲染与之对应:


离屏渲染

离屏渲染概念起源于GPU层面上,所以很多人觉得离屏渲染这个概念很陌生,我们可以用一个比较通俗的语言解释离屏渲染:也就是当我们设置某一些UI视图的图层属性,如果说指定成在被未预合成之前,不能用于直接被显示的时候,那么就触发了离屏渲染。典型的比如我们设置视图的圆角属性,包括一些蒙层遮罩。

总结标准回答:

当我们指定了UI视图的某些属性,标记成它在未预合成之前,不能用于当前屏幕上直接显示的时候,就会触发离屏渲染。而离屏渲染的概念起源于GPU层面,指的是在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。

  • 什么场景下会触发离屏渲染?
    这里列举四点:
    第一个就是当设置一个图层的圆角的时候会触发离屏渲染,需要在设置圆角的同时,同时要设置maskToBounds这个属性为YES的时候,才会触发离屏渲染,当设置其中一个是无法触发离屏渲染的。再来看看还有哪些场景可以触发离屏渲染,比如说设置一个视图的图层蒙版,包括阴影的设置以及光栅化的设置,都会触发离屏渲染。


    • 为何要避免离屏渲染?

CPU和GPU在进行具体的视图绘制渲染的过程中做了大量的工作。而离屏渲染是发生在GPU层面的,由于离屏渲染使GPU层面上面触发了OpenGL的多通道渲染管件,产生了额外的开销,所以我们需要避免离屏渲染。

对于初中级可以这样回答:离屏渲染会创建新的缓冲区,会有内存上的开销,包括对于上下文的切换,因为有多通道渲染管线,最终需要把多通道的渲染结果做一个最终的合成,那需要涉及到上下文切换。就会有GPU额外的开销。

高级的回答:在触发离屏渲染的时候会增加GPU的工作量,而增加了GPU的工作量很有可能导致CPU和GPU工作耗时加起来的总耗时超出了16.7ms,可能就会导致UI的卡顿和掉帧,所以我们需要避免离屏渲染。

相关文章

  • iOS-从UIImage渲染模式到UI渲染性能优化

    关键词: imageWithRenderingMode渲染模式 UI渲染性能优化、离屏渲染、Color Blend...

  • UI离屏渲染

    先理解一下在屏渲染的概念。 On-Screen Rendering:意为当前屏幕渲染,指的是GPU的渲染操作是在当...

  • UI离屏渲染

    什么是离屏渲染,你对离屏渲染是怎么理解的? 先看在屏渲染概念: 可以说在屏渲染指的GPU层面的一个概念。那么离屏渲...

  • iOS--离屏渲染

    离屏渲染(Offscreen rendering) 离屏渲染的定义 离屏渲染(offscreen-renderin...

  • 图层性能-离屏渲染、光栅化等

    一.离屏渲染 1.在屏渲染、离屏渲染: On-Screen Rendering/在屏渲染:在屏渲染:指的是GPU的...

  • 关于离屏渲染

    1.什么是离屏渲染 2.离屏渲染的触发方式 3.离屏渲染的意义 4.离屏渲染的不足 1.什么是离屏渲染 要了解离屏...

  • 四、iOS离屏渲染

    一、开启图层是否触发离屏渲染问题 注:离屏渲染的图层会标记为黄色 二、离屏渲染的渲染流程 三、离屏渲染触发的原因 ...

  • UI视图及UITableView流畅性优化

    一.离屏渲染 1. 在屏渲染和离屏渲染 在屏渲染是指在当前用于显示的屏幕缓冲区进行GPU渲染操作 离屏渲染是指在当...

  • iOS下对离屏渲染的理解

    离屏渲染定义 离屏渲染的流程如图: GPU把渲染好的的内容存放到离屏渲染缓冲区中,在离屏渲染缓冲区(Offscre...

  • iOS性能优化

    一、避免离屏渲染:当我们设置一些UI视图的图层属性,如果说指令为在未执行之前不能用于直接显示的时候,触发离屏渲染,...

网友评论

      本文标题:UI离屏渲染

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