OpenGL/OpenGL ES(二) 渲染架構(gòu)

1. 渲染架構(gòu)圖

OpenGL 渲染架構(gòu)圖.png

上圖是 OpenGL 渲染的大致架構(gòu),從圖中我們可以看出,OpenGL 渲染架構(gòu)分為Client(客戶(hù)端)Server(服務(wù)端),這里的客戶(hù)端和服務(wù)端并不是我們以前認(rèn)知的,而是

  • Client(客戶(hù)端):OpenGL 的客戶(hù)端主要包含 OpenGL 的 API 和 iOS 的其他代碼,運(yùn)行在CPU中。
  • Server(服務(wù)端):OpenGL 的服務(wù)端主要包含 OpenGL 的底層渲染處理,運(yùn)行在GPU中。

圖中的 Attributes、Uniforms 和 Texture Data 都是 Client 和 Server 之間的數(shù)據(jù)傳輸通道,下面分別看看這三個(gè)通道的特點(diǎn)

  • Attributes:只能傳輸?shù)?strong>頂點(diǎn)著色器,參數(shù)一般為經(jīng)常發(fā)生變動(dòng)的數(shù)據(jù),如:頂點(diǎn)數(shù)據(jù)、光照坐標(biāo)、投影矩陣以及紋理坐標(biāo)(即圖片映射坐標(biāo),通過(guò)頂點(diǎn)著色器橋接給片源著色器)、光照法線(xiàn)等。
  • Uniforms:可以傳輸?shù)?strong>頂點(diǎn)著色器和片元著色器,參數(shù)一般為不經(jīng)常發(fā)生變動(dòng)的數(shù)據(jù),如統(tǒng)一批次類(lèi)數(shù)據(jù)(變換矩陣、顏色值等)。
  • Texture Data:可以傳輸?shù)?strong>頂點(diǎn)著色器和片元著色器,一般傳輸紋理數(shù)據(jù),但紋理數(shù)據(jù)傳輸給頂點(diǎn)著色器沒(méi)什么用,所以一般傳輸給片元著色器。

上圖中 Primitive Assembly 的過(guò)程譯為圖元裝配,也可以譯為光柵化。

以上就是 OpenGL 的渲染流程,當(dāng)然 OpenGL 提供固定管線(xiàn),其中的存儲(chǔ)著色器已經(jīng)將上面的步驟封裝起來(lái),我們只需知道怎么用即可。接下來(lái)我們通過(guò)渲染幾個(gè) 3D 圖形的 Demo 來(lái)熟悉一下開(kāi)發(fā)及渲染流程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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