Skip to content

离屏渲染

AnimenzzzKJ edited this page Sep 26, 2019 · 3 revisions

概念

在GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作

为什么离屏渲染耗性能

离屏渲染的代价很高,想要进行离屏渲染,首选要创建一个新的缓冲区,离屏渲染会有一个上下文的概念,离屏渲染的整个过程需要切换上下文,先从当前屏幕切换到离屏,等结束后,又要将上下文环境切换回来,这就是消耗性能的原因

为什么会有这套机制

当使用圆角、阴影,遮罩的时候,图层属性的混合体被指定在未预合成之前(下一个垂直信号开始前)不能直接在屏幕中绘制,所以需要屏幕外渲染

以下操作会触发离屏渲染

  • shouldRasterize(光栅化)
  • masks(遮罩)
  • edge antialiasing(抗锯齿)
  • group opacity(不透明)
  • 渐变

参考:

https://www.jianshu.com/p/57e2ec17585b

http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

https://objccn.io/issue-3-1/

Clone this wiki locally