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ā)及渲染流程。