离屏渲染

学而时习之,不亦乐乎,大家好,我是张杰。今天来讲一下离屏渲染

一/官方解释

先讲一下app通常的渲染过程

App 通过 CPU 和 GPU 的合作,不停地将内容渲染完成放入 Framebuffer 帧缓冲器中,而显示屏幕不断地从 Framebuffer 中获取内容,显示实时的内容。

离屏渲染

与普通情况下 GPU 直接将渲染好的内容放入 Framebuffer 中不同,需要先额外创建离屏渲染缓冲区 Offscreen Buffer,将提前渲染好的内容放入其中,等到合适的时机再将 Offscreen Buffer 中的内容进一步叠加、渲染,完成后将结果切换到 Framebuffer 中。

二我的理解

app在渲染过程中,如果遇到的是普通的展示,不带圆角,光影,透明色之类的,GPU正常渲染,比如一个普通的view。渲染完了显示在屏幕上,Framebuffer就丢掉了这个view,空出来继续装别的渲染内容。如果遇到不太寻常的展示内容,比如一个圆角按钮,正常创建iOS自带的按钮是边界清楚的,不动底层的ualayer,此时GPU正常渲染,正常显示。如果是圆角(也分代码怎么写,如果),此时先额外创建离屏渲染缓冲区 Offscreen Buffer,将提前渲染好的内容放入其中等到合适的时机再将 Offscreen Buffer 中的内容进一步叠加、渲染,完成后将结果切换到 Framebuffer 中。然后显示在屏幕上。

缺点

1、大量使用会导致app卡顿

优点

1、关于比较复杂的可复用的UI可以先渲染再拿来用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [TOC] 缓存!缓存!还是缓存! 缓存是啥?cache、buffer。也许你没用过,但是你一定见过无数次这两个单...
    修_远阅读 3,604评论 0 2
  • 1. CPU 与 GPU CPU与GPU的不同 设计目标的不同,它们分别针对了两种不同的应用场景。 CPU需要很强...
    苏苏慢跑阅读 7,017评论 1 24
  • 我们都知道在iOS中离屏渲染会影响性能,它是在GPU的帧缓冲区(framebuff)之外额外的开辟了一段内存空间来...
    Joker_King阅读 3,593评论 0 0
  • 离屏渲染具体过程 通常的渲染流程: App 通过 CPU 和 GPU 的合作,不停地将内容渲染完成放入 Frame...
    iOS_修心阅读 4,151评论 0 1
  • iOS 中的渲染框架image.png 如上图:iOS的渲染框架符合渲染流水线的基本框架,在硬件基础,每个App有...
    DarkArtist阅读 3,110评论 0 1