OpenGL ES學(xué)習(xí)之路(3.1) 著色器渲染過程、渲染方式、FrameBuffer與RenderBuffer

著色器渲染過程

在渲染過程中,必須存儲2種著??,分別是頂點(diǎn)著??、片元著??。頂點(diǎn)著??是第?個(gè)著色?、?元著??是最后?個(gè)。頂點(diǎn)著??中處理頂點(diǎn)、片元著??處理像素點(diǎn)顏色。

  • 渲染流程圖


    image.png
    • 1.創(chuàng)建頂點(diǎn)
    • 2.然后通過頂點(diǎn)著色器渲染
    • 3.連接信息條,通過各個(gè)頂點(diǎn)連接成幾何圖形
    • 4.光柵化:其實(shí)是確定像素點(diǎn)在屏幕上繪制的位置,然后這些片段由片元著色器處理(輸入給片元著色器)
    • 5.光柵化階段生成每個(gè)片元執(zhí)行這個(gè)著色器
    • 6.最終呈現(xiàn)出圖形

渲染方式

  • 屏幕渲染方式分為兩種:
    • On-Screen Rendering(當(dāng)前屏幕渲染)
      • 指的是GPU的渲染操作是在當(dāng)前用于顯示的屏幕緩存區(qū)中進(jìn)行的。
    • Off-Screen Rendering(離幕渲染)
    • 指的是GPU在當(dāng)前屏幕緩存區(qū)以外新開辟一個(gè)內(nèi)存混存區(qū)進(jìn)行渲染操作。
    • 般情況下,OpenGL ES會(huì)將應(yīng)用提供到渲染服務(wù)的動(dòng)畫直接渲染顯示(使?基本的渲染的流程) 但對于?些復(fù)雜的圖像動(dòng)畫的渲染,并不能夠直接渲染疊加顯示出來。?是需要根據(jù)Command Buffer分通道進(jìn)行渲染再組合。這個(gè)組合過程中,就有些渲染通道是不會(huì)直接顯示出來的。標(biāo)記此次渲染需要更多的渲染通道和合并步驟,?這些沒有直接渲染顯示在屏幕上的通道就是離屏渲染通道。
  • 離屏渲染為什么會(huì)卡頓?
    • 離屏渲染需要更多的渲染通道,?不同的渲染通道間切換需要消耗一定的時(shí)間,這個(gè)時(shí)間內(nèi)GPU會(huì)閑置。當(dāng)通道數(shù)量足夠是,對性能也會(huì)較?大的影響。

離屏渲染的體現(xiàn)

  • 1、相?于當(dāng)前屏幕渲染,離屏渲染的代價(jià)相對?言較高。主要有以下2個(gè)原因:

    • 創(chuàng)建新的的緩存區(qū)
    • 上下文切換
  • 哪些情況會(huì)使?離屏渲染(off-Screen Render)?

    • 1.drawRect
    • 2.layer.shouldRasterize = YES;
    • 3.有mask或者陰影(layer.makesToBunds)、shouldRasterize(光柵化)、masks(遮罩)、shadow(陰影)、edge antialiasing(抗鋸齒)、group opacity(不透明)
    • 4.Text(UILabel,CATextLayer,CoreText)

FrameBuffer與RenderBuffer

  • 為什么要用FrameBuffer 和 RenderBuffer?它們是什么關(guān)系?
    • Color Attachment:存儲的是紋理圖片顏色值,實(shí)質(zhì)上紋理圖片顏色值屬于顏色附著點(diǎn)的一種
    • Depth Attachment:指向的是深度緩沖區(qū)和顏色緩沖區(qū)
    • Stencil Attachment:指向的是模版緩沖區(qū)
    • RenderBuffer Objects :渲染緩沖區(qū)對象,無論是紋理、圖片、顏色、深度緩沖區(qū)、模版緩沖區(qū)都存在這個(gè)對象
    • FrameBuffer 上的附著點(diǎn)其實(shí)相當(dāng)于內(nèi)存地址,它并沒有存儲實(shí)質(zhì)的內(nèi)容,只是三個(gè)附著點(diǎn)或三個(gè)內(nèi)存地址在FrameBuffer Objects例如color Attachment ,它僅僅是附著在FrameBuffer身上
image.png
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容