iOS開發(fā),初探離屏渲染

一、概念理解

OpenGL中雳灵,GPU屏幕渲染有以下兩種方式:
On-Screen Rendering

意為當(dāng)前屏幕渲染越锈,指的是GPU的渲染操作是在當(dāng)前用于顯示的屏幕緩沖區(qū)中進(jìn)行仅淑。
Off-Screen Rendering

意為離屏渲染晕拆,指的是GPU在當(dāng)前屏幕緩沖區(qū)以外新開辟一個緩沖區(qū)進(jìn)行渲染操作。

二嘀掸、離屏渲染的是是非非

相比于當(dāng)前屏幕渲染莫鸭,離屏渲染的代價是很高的,主要體現(xiàn)在兩個方面:
創(chuàng)建新緩沖區(qū)

要想進(jìn)行離屏渲染横殴,首先要創(chuàng)建一個新的緩沖區(qū)被因。
上下文切換

離屏渲染的整個過程卿拴,需要多次切換上下文環(huán)境:先是從當(dāng)前屏幕(On-Screen)切換到離屏(Off-Screen);等到離屏渲染結(jié)束以后梨与,將離屏緩沖區(qū)的渲染結(jié)果顯示到屏幕上有需要將上下文環(huán)境從離屏切換到當(dāng)前屏幕堕花。而上下文環(huán)境的切換是要付出很大代價的。
三粥鞋、離屏渲染觸發(fā)方式
設(shè)置了以下屬性時缘挽,都會觸發(fā)離屏繪制:
shouldRasterize(光柵化)
masks(遮罩)
shadows(陰影)
edge antialiasing(抗鋸齒)
group opacity(不透明)

光柵化是柵格化,像素化的意思,就是把矢量圖形轉(zhuǎn)化為像素點(diǎn)的過程.
抗鋸齒就是消除圖像顯示中那些鋸齒化圖像.具體了解可以看這里
需要注意的是,如果shouldRasterize被設(shè)置成YES呻粹,在觸發(fā)離屏繪制的同時壕曼,會將光柵化后的內(nèi)容緩存起來,如果對應(yīng)的layer及其sublayers沒有發(fā)生改變等浊,在下一幀的時候可以直接復(fù)用腮郊。這將在很大程度上提升渲染性能。
而其它屬性如果是開啟的筹燕,就不會有緩存轧飞,離屏繪制會在每一幀都發(fā)生。

四撒踪、另一種特殊的“離屏渲染”

按照之前的說法过咬,如果將不在GPU的當(dāng)前屏幕緩沖區(qū)中進(jìn)行的渲染都稱為離屏渲染,那么就還有另一種特殊的“離屏渲染”方式: CPU渲染
制妄。
如果我們重寫了drawRect方法掸绞,并且使用任何Core Graphics的技術(shù)進(jìn)行了繪制操作,就涉及到了CPU渲染耕捞。整個渲染過程由CPU在App內(nèi) 同步地
完成衔掸,渲染得到的bitmap最后再交由GPU用于顯示畜普。
五费封、Instruments
Instruments的Core Animation工具中有幾個和離屏渲染相關(guān)的檢查選項(xiàng):
Color Offscreen-Rendered Yellow

開啟后會把那些需要離屏渲染的圖層高亮成黃色感挥,這就意味著黃色圖層可能存在性能問題。
Color Hits Green and Misses Red

如果shouldRasterize被設(shè)置成YES凌埂,對應(yīng)的渲染結(jié)果會被緩存,如果圖層是綠色诗芜,就表示這些緩存被復(fù)用瞳抓;如果是紅色就表示緩存會被重復(fù)創(chuàng)建,這就表示該處存在性能問題了伏恐。
六孩哑、如何抉擇
現(xiàn)在擺在我們面前得有三個選擇:當(dāng)前屏幕渲染、離屏渲染翠桦、CPU渲染横蜒,該用哪個呢胳蛮?這需要根據(jù)具體的使用場景來決定。
盡量使用當(dāng)前屏幕渲染

鑒于離屏渲染丛晌、CPU渲染可能帶來的性能問題仅炊,一般情況下,我們要盡量使用當(dāng)前屏幕渲染澎蛛。
離屏渲染 VS CPU渲染

由于GPU的浮點(diǎn)運(yùn)算能力比CPU強(qiáng)抚垄,CPU渲染的效率可能不如離屏渲染;但如果僅僅是實(shí)現(xiàn)一個簡單的效果谋逻,直接使用CPU渲染的效率又可能比離屏渲染好呆馁,畢竟離屏渲染要涉及到緩沖區(qū)創(chuàng)建和上下文切換等耗時操作。
總之毁兆,具體的選擇應(yīng)該由性能測試結(jié)果來決定浙滤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荧恍,隨后出現(xiàn)的幾起案子瓷叫,更是在濱河造成了極大的恐慌,老刑警劉巖送巡,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摹菠,死亡現(xiàn)場離奇詭異,居然都是意外死亡骗爆,警方通過查閱死者的電腦和手機(jī)次氨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摘投,“玉大人煮寡,你說我怎么就攤上這事∠簦” “怎么了幸撕?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長外臂。 經(jīng)常有香客問我坐儿,道長,這世上最難降的妖魔是什么宋光? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任貌矿,我火速辦了婚禮,結(jié)果婚禮上罪佳,老公的妹妹穿的比我還像新娘逛漫。我一直安慰自己,他們只是感情好赘艳,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布酌毡。 她就那樣靜靜地躺著克握,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阔馋。 梳的紋絲不亂的頭發(fā)上玛荞,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音呕寝,去河邊找鬼勋眯。 笑死,一個胖子當(dāng)著我的面吹牛下梢,可吹牛的內(nèi)容都是我干的客蹋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼孽江,長吁一口氣:“原來是場噩夢啊……” “哼讶坯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岗屏,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辆琅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后这刷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婉烟,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年暇屋,在試婚紗的時候發(fā)現(xiàn)自己被綠了似袁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡咐刨,死狀恐怖昙衅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情定鸟,我是刑警寧澤而涉,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站联予,受9級特大地震影響啼县,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躯泰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一谭羔、第九天 我趴在偏房一處隱蔽的房頂上張望华糖。 院中可真熱鬧麦向,春花似錦、人聲如沸客叉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卵慰,卻和暖如春沙郭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裳朋。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工病线, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲤嫡。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓送挑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暖眼。 傳聞我的和親對象是個殘疾皇子惕耕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 相比于當(dāng)前屏幕渲染,離屏渲染的代價是很高的诫肠,這也是iOS移動端優(yōu)化的必要部分司澎。 OpenGL中,GPU屏幕渲染有以...
    一個人在路上走下去閱讀 8,863評論 0 74
  • 導(dǎo)讀: 離屏渲染在開發(fā)中帶來界面卡頓問題一直讓開發(fā)者們頭疼.今天在這里寫一遍關(guān)于離屏渲染的博文.希望大家有所收獲...
    HelloYeah閱讀 3,901評論 6 46
  • Core Animation工具用來監(jiān)測Core Animation性能栋豫。它給我們提供了周期性的FPS挤安,并且考慮到...
    F麥子閱讀 824評論 0 1
  • //壓縮圖片質(zhì)量+(UIImage *)reduceImage:(UIImage *)image percent:...
    LiwaySun閱讀 316評論 0 0
  • 以為的一切 現(xiàn)實(shí)的種種 是稚氣的未褪 是內(nèi)心的鎧甲尚未成形 鎖住敏感多思的心靈 是一顆尚未世俗的心 第一次向世界微...
    詩與八月閱讀 203評論 0 1