1.總結:Graphics pipeline 主要分為兩部分工作
- 把3D坐標轉換成2D坐標
- 把2D坐標轉換成真實的有顏色的像素
2.下圖就是一個頂點數據經過幾個步驟后轉化成顯示在屏幕上像素的過程(一般也叫做GLSL的流水線工作流程),藍色圖形部分是我們可以通過寫shader文件參與的,目前參與比較多的主要是頂點和片段shader。
3. 對上圖每個步驟進行解析
3.1 Vertex Data[]傳到頂點shader程序
3.2 頂點着色程序對頂點數據進行轉換,把Vertex Data中的3D坐標轉換成對應的不同於Vertex Data中的3D坐標,在這里,頂點着色程序允許用戶進行一些基本的處理和頂點屬性設置。
3.3 shape assembly(也叫 primitive assembly) 是一個對頂點數據進行簡單的組合過程,比如上圖就是把3個點組合成一個三角形。
3.4 簡單組合后竟然幾何着色程序,根據輸入的vertices(頂點數據集)能生成新的或者說是其他的圖形,在上圖中生成了一個新的三角形.
3.5 經過幾何着色后就會進入細分着色程序。在這里有能力生成更小更多的小的簡單的圖形,在上圖中我們自己讓它生成更小更多的三角形。
3.6 之后就是進入光柵化過程,在這里會把原始的圖形最終轉換成在屏幕上顯示的相對應的像素,在這里會進行對顯示內容進行判斷(比如有些超出屏幕顯示就會被截掉等),其中最終生成的片段會在片段着色器中使用。
3.7 片段着色器會計算每個像素在屏幕上顯示的最終顏色
- OpenGL 3.3以后,OpenGL程序就必須要定義一個vertex shader 和 fragment shader(因為在GPU中沒有默認定義的 vertex/fragment shaders)。