opengl渲染方式在屏離屏CPU-創(chuàng)新互聯(lián)

一、概念理解

OpenGL中,GPU屏幕渲染有以下兩種方式:

創(chuàng)新互聯(lián)從2013年成立,先為旬陽等服務(wù)建站,旬陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為旬陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
  • On-Screen Rendering

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

  • Off-Screen Rendering

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

二、離屏渲染的是是非非

相比于當(dāng)前屏幕渲染,離屏渲染的代價(jià)是很高的,主要體現(xiàn)在兩個(gè)方面:

  • 創(chuàng)建新緩沖區(qū)

要想進(jìn)行離屏渲染,首先要?jiǎng)?chuàng)建一個(gè)新的緩沖區(qū)。

  • 上下文切換

離屏渲染的整個(gè)過程,需要多次切換上下文環(huán)境:先是從當(dāng)前屏幕(On-Screen)切換到離屏(Off-Screen);等到離屏渲染結(jié)束以后,將離屏緩沖區(qū)的渲染結(jié)果顯示到屏幕上有需要將上下文環(huán)境從離屏切換到當(dāng)前屏幕。而上下文環(huán)境的切換是要付出很大代價(jià)的。

三、離屏渲染觸發(fā)方式

設(shè)置了以下屬性時(shí),都會(huì)觸發(fā)離屏繪制:

  • shouldRasterize(光柵化)

  • masks(遮罩)

  • shadows(陰影)

  • edge antialiasing(抗鋸齒)

  • group opacity(不透明)

需要注意的是,如果shouldRasterize被設(shè)置成YES,在觸發(fā)離屏繪制的同時(shí),會(huì)將光柵化后的內(nèi)容緩存起來,如果對(duì)應(yīng)的layer及其sublayers沒有發(fā)生改變,在下一幀的時(shí)候可以直接復(fù)用。這將在很大程度上提升渲染性能。

而其它屬性如果是開啟的,就不會(huì)有緩存,離屏繪制會(huì)在每一幀都發(fā)生。

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

按照之前的說法,如果將不在GPU的當(dāng)前屏幕緩沖區(qū)中進(jìn)行的渲染都稱為離屏渲染,那么就還有另一種特殊的“離屏渲染”方式: CPU渲染 。

如果我們重寫了drawRect方法,并且使用任何Core Graphics的技術(shù)進(jìn)行了繪制操作,就涉及到了CPU渲染。整個(gè)渲染過程由CPU在App內(nèi) 同步地 完成,渲染得到的bitmap最后再交由GPU用于顯示。

五、Instruments

Instruments的Core Animation工具中有幾個(gè)和離屏渲染相關(guān)的檢查選項(xiàng):

  • Color Offscreen-Rendered Yellow

開啟后會(huì)把那些需要離屏渲染的圖層高亮成×××,這就意味著×××圖層可能存在性能問題。

  • Color Hits Green and Misses Red

如果shouldRasterize被設(shè)置成YES,對(duì)應(yīng)的渲染結(jié)果會(huì)被緩存,如果圖層是綠色,就表示這些緩存被復(fù)用;如果是紅色就表示緩存會(huì)被重復(fù)創(chuàng)建,這就表示該處存在性能問題了。

六、如何抉擇

現(xiàn)在擺在我們面前得有三個(gè)選擇:當(dāng)前屏幕渲染、離屏渲染、CPU渲染,該用哪個(gè)呢?這需要根據(jù)具體的使用場(chǎng)景來決定。

  • 盡量使用當(dāng)前屏幕渲染

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

  • 離屏渲染 VS CPU渲染

由于GPU的浮點(diǎn)運(yùn)算能力比CPU強(qiáng),CPU渲染的效率可能不如離屏渲染;但如果僅僅是實(shí)現(xiàn)一個(gè)簡(jiǎn)單的效果,直接使用CPU渲染的效率又可能比離屏渲染好,畢竟離屏渲染要涉及到緩沖區(qū)創(chuàng)建和上下文切換等耗時(shí)操作。

總之,具體的選擇應(yīng)該由性能測(cè)試結(jié)果來決定。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享文章:opengl渲染方式在屏離屏CPU-創(chuàng)新互聯(lián)
路徑分享:http://bm7419.com/article48/cdidep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站設(shè)計(jì)公司企業(yè)網(wǎng)站制作、品牌網(wǎng)站建設(shè)建站公司、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)