iOS 离屏渲染

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

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

哪些操作会触发离屏渲染?
  1. 光栅化,layer.shouldRasterize = YES;
  2. 遮罩,layer.mask;
  3. 圆角,同时设置layer.masksToBounds = YES、layer.cornerRadius大于0;
  • 考虑通过CoreGraphics绘制裁剪圆角,或者叫美工提供圆角图片。
  1. 阴影,layer.shadowXXX;
  • 如果设置了layer.shadowPath就不会产生离屏渲染。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 屏幕渲染的原理: 需要显示的图像经过CRT电子枪以极快的速度一行一行的扫描,扫描出来就呈现了一帧画面,随后电子枪又...
    一条鱼的星辰大海阅读 580评论 1 4
  • README: 引言: 一款优秀的app,流畅很关键,用户使用60的fps的app,跟使用30的fps的app感受...
    uncleRX阅读 30,723评论 31 236
  • README: 引言: 一款优秀的app,流畅很关键,用户使用60的fps的app,跟使用30的fps的app感受...
    luonaerduo阅读 486评论 0 2
  • 有时候面试偶尔会有面试官问你什么是离屏渲染?什么情况下会触发?该如何应对?接下面一一讲解。 离屏渲染 离屏渲染就是...
    赵哥窟阅读 158评论 0 0
  • 最近在看一档综艺节目,《我们相爱吧》。节目以明星谈恋爱为主题,在广大明星中筛选出了三对各具特色的明星组合,开展了一...
    舒小曼阅读 1,958评论 18 40