WebGL渲染管線
下圖是WebGL渲染管線的示意圖:
Vertex Buffer Objects (VBOs)
VBOS中包含了用于描述幾何體的信息。如,幾何體的頂點坐標,法線坐標,顏色,紋理坐標等。
Index Buffer Objects (IBOs)
IBOs中包含了描述頂點關系的信息。它使用了頂點在VBOs中的索引位置。
Vertex Shader
頂點著色器在每一個頂點上執行。它處理頂點相關信息,如頂點坐標,法線坐標,顏色,紋理坐標。這些信息從VBO中獲取,關聯到頂點著色器用中Attribute。
Fragment Shader
片元著色器在每一個片元上執行,用以計算每個片元的顏色。
Framebuffer
幀緩沖區是一個二維的緩沖區,用以存儲片元著色器中處理過的片元。一旦所有的片元都完成處理,渲染結果就可以顯示在屏幕上了。
Attributes
屬性是頂點著色器中的輸入變量。它指定了如何從緩沖區中讀取數據,并將數據傳遞給頂點著色器。你可以在緩沖區中存儲位置信息(3個32位的浮點型數據)。然后指定從哪個緩沖區中讀取位置信息,位置信息的數據類型是什么,從緩沖區中的哪個位置開始讀,總共讀取多少個字節。由于頂點著色器需要在每一個頂點上執行,因此每次執行時,屬性值都不會相同。
Uniforms
Uniforms是頂點著色器和片元著色器的輸入變量。與Attributes不同,Uniforms變量在一個渲染循環中是固定的。比如,光源的位置。
Textures
紋理中經常包含的是圖像數據,但可以包含其它數據。
Varyings
Varyings變量常用于從頂點著色器向片元著色器傳遞數據。頂點著色器中的Varyings變量,傳遞給片元著色器前,會經過插值計算。