学而时习之,不亦乐乎,大家好,我是张杰。今天来讲一下离屏渲染
一/官方解释
先讲一下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可以先渲染再拿来用。
网友评论