离屏渲染

什么是离屏渲染? 对离屏渲染的理解。

在屏渲染 On-Screen Rendering

GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行

离屏渲染 Off-Screen Rendering

  • 离屏幕渲染是在GPU层面发生的,即GPU在当前屏幕缓冲区外,新开辟了一个缓冲区进行渲染
  • 当设置某一些视图的图层属性时,如果在GPU未合成前,不能用于直接显示的时候,就会触发离屏渲染,包括设置视图的圆角属性、蒙层遮罩等

离屏渲染触发条件

  • 设置图层圆角时(当和maskToBounds一起使用时)
  • 设置图层蒙版
  • 设置阴影
  • 光栅化

避免离屏渲染

CPU和GPU在进行视图绘制渲染时做了大量的工作,而离屏渲染是发生在GPU层面的,即离屏渲染触发了GPU层面的OpenGL的多通道渲染管线产生了额外的开销,因此需要避免

  • 创建新的渲染缓冲区,增加内存的开销
  • 因为触发了OpenGL的多通道渲染管线,会有上下文的切换,增加GPU的额外开销
    总结: 在触发离屏渲染时,会增加GPU的工作量,会导致CPU和GPU工作耗时会超过16.7ms(每一帧图像最大支持的绘制时间),最终会导致UI的卡顿和掉帧,因此需要避免离屏渲染

你可能感兴趣的:(离屏渲染)