渲染管線
- GPU百科大全
-
openGL 是一套軟件技術(shù), 它采用 C(CPU)S(GPU) 結(jié)構(gòu), c 是給 s 傳遞頂點(diǎn)和紋理信息的, s 主要用來顯示圖像
渲染流程詳細(xì)介紹
-
流程圖
OpenGL ES 3.0編程指南 GPU 首先從 vertex buffer 中讀取數(shù)據(jù),然后通過 vertex shader 計(jì)算出各個(gè)頂點(diǎn)的具體位置
通過圖元組裝基本構(gòu)成一個(gè)骨架
因?yàn)槠聊簧现挥卸S坐標(biāo)系, 所以后續(xù)的操作是把三維的坐標(biāo)系光柵化為二維
- 然后通過 fragment shader 映射出各個(gè) vertex 所對(duì)應(yīng)的像素值當(dāng)所有東西都準(zhǔn)備好的時(shí)候把這些信息渲染到幀緩存中等待顯示
各種名詞的解析
- VBO( Vertex Buffer Object ) / VAO (Vertex Array Object)
VBO 其實(shí)是用來存放頂點(diǎn)的緩沖區(qū), VAO 是用來提高效率而誕生的,因?yàn)槿绻看?CPU 向 GPU 傳遞相同的數(shù)據(jù)會(huì)浪費(fèi)很多不必要的性能, 因此 VAO 通過記錄一系列頂點(diǎn)的狀態(tài)來達(dá)到?jīng)]必要每次都要傳遞相同的數(shù)據(jù)給 GPU 提高性能
vertex shader
屏幕上每個(gè)頂點(diǎn)都會(huì)通過 vertex shader 計(jì)算出具體的位置, 因此我們需要在這里可以使用相關(guān)的數(shù)學(xué)知識(shí)來達(dá)到我們想要的效果圖元組裝
圖元是一個(gè)個(gè)三角形把頂點(diǎn)著色器輸出的頂點(diǎn)組合成圖元。rasterization (光柵化)
光柵化是將圖元轉(zhuǎn)化為一組二維片段的過程,然后,這些片段由片段著色器處理(片段著色器的輸入)。這些二維片段代表著可在屏幕上繪制的像素。用于從分配給每個(gè)圖元頂點(diǎn)的頂點(diǎn)著色器輸出生成每個(gè)片段值的機(jī)制稱作插值(Interpolation)。這句不是人話的話解釋了一個(gè)問題,就是從cpu提供的分散的頂點(diǎn)信息是如何變成屏幕上密集的像素的,圖元裝配后頂點(diǎn)可以理解成變?yōu)閳D形,光柵化時(shí)可以根據(jù)圖形的形狀,插值出那個(gè)圖形區(qū)域的像素(紋理坐標(biāo)v_texCoord、顏色等信息)。注意,此時(shí)的像素并不是屏幕上的像素,是不帶有顏色的。接下來的片段著色器完成上色的工作。FragmentShader
根據(jù)紋理的頂點(diǎn)坐標(biāo),從烘培好的紋理中采樣對(duì)應(yīng)頂點(diǎn)所對(duì)應(yīng)的紋理helloWorld sample
openGLES-turorial-01-helloworldtriangle

