學(xué)而時(shí)習(xí)之,不亦樂乎,大家好散址,我是張杰。今天來(lái)講一下離屏渲染
一/官方解釋
先講一下app通常的渲染過程
App 通過 CPU 和 GPU 的合作宣赔,不停地將內(nèi)容渲染完成放入 Framebuffer 幀緩沖器中预麸,而顯示屏幕不斷地從 Framebuffer 中獲取內(nèi)容,顯示實(shí)時(shí)的內(nèi)容儒将。
離屏渲染
與普通情況下 GPU 直接將渲染好的內(nèi)容放入 Framebuffer 中不同吏祸,需要先額外創(chuàng)建離屏渲染緩沖區(qū) Offscreen Buffer,將提前渲染好的內(nèi)容放入其中钩蚊,等到合適的時(shí)機(jī)再將 Offscreen Buffer 中的內(nèi)容進(jìn)一步疊加贡翘、渲染,完成后將結(jié)果切換到 Framebuffer 中砰逻。
二我的理解
app在渲染過程中鸣驱,如果遇到的是普通的展示,不帶圓角蝠咆,光影踊东,透明色之類的,GPU正常渲染刚操,比如一個(gè)普通的view闸翅。渲染完了顯示在屏幕上,F(xiàn)ramebuffer就丟掉了這個(gè)view菊霜,空出來(lái)繼續(xù)裝別的渲染內(nèi)容坚冀。如果遇到不太尋常的展示內(nèi)容,比如一個(gè)圓角按鈕鉴逞,正常創(chuàng)建iOS自帶的按鈕是邊界清楚的记某,不動(dòng)底層的ualayer,此時(shí)GPU正常渲染司训,正常顯示。如果是圓角(也分代碼怎么寫液南,如果)壳猜,此時(shí)先額外創(chuàng)建離屏渲染緩沖區(qū) Offscreen Buffer,將提前渲染好的內(nèi)容放入其中等到合適的時(shí)機(jī)再將 Offscreen Buffer 中的內(nèi)容進(jìn)一步疊加贺拣、渲染蓖谢,完成后將結(jié)果切換到 Framebuffer 中捂蕴。然后顯示在屏幕上譬涡。
缺點(diǎn)
1、大量使用會(huì)導(dǎo)致app卡頓
優(yōu)點(diǎn)
1啥辨、關(guān)于比較復(fù)雜的可復(fù)用的UI可以先渲染再拿來(lái)用涡匀。