离屏渲染

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

一/官方解释

先讲一下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可以先渲染再拿来用。

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

推荐阅读更多精彩内容