iOS-离屏渲染

在OpenGL中,GPU有2种渲染方式
On-Screen Rendering:当前屏幕渲染,在当前用于显示的屏幕缓冲区进行渲染操作
Off-Screen Rendering:离屏渲染,在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作

  • 离屏渲染消耗性能的原因

需要创建新的缓冲区
离屏渲染的整个过程,需要多次切换上下文环境,先是从当前屏幕(On-Screen)切换到离屏(Off-Screen);等到离屏渲染结束以后,将离屏缓冲区的渲染结果显示到屏幕上,又需要将上下文环境从离屏切换到当前屏幕

哪些操作会触发离屏渲染?

1.光栅化,layer.shouldRasterize = YES
2.遮罩,layer.mask
3.系统圆角的离屏渲染,同时设置layer.masksToBounds = YES、layer.cornerRadius大于0,可以考虑通过CoreGraphics绘制裁剪圆角,或者叫美工提供圆角图片
4.阴影,layer.shadowXXX,如果设置了layer.shadowPath就不会产生离屏渲染
5.GPU版本的离屏渲染 -> 更改 mask,shadow,Group opacity,edge antialiasing
6.CPU 版本的离屏渲染 ->
使用 Core Graphic 里面的绘制 API 也会触发离屏渲染 ,比如 drawRect:

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