OpenGL官方教程——着色器語言概述
可編程圖形硬件管線(流水線)
將 Pertransformed Vertices (每一個待轉換頂點)
傳人 Programmable Vertex Processor (可編程的頂點處理器)
得到 Transformed Vertices (轉換的頂點)
將 Transformed Vertices (轉換的頂點)
傳入 Programmable Geometry Processor (可編程的幾何處理器)
得到 Assenbled Polygons,Lines,or Points (組裝 多邊形、線或點)
進行 Clipping,Rasterization and Interpolation (裁剪,光柵化和插值)
得到 Rasterized Pertransformed Fragments (光柵化待轉換的片元[片段])
傳入 Programmable Fragment Processor (可編程的片元處理器)
得到 Transformed Ftagment (轉換的片元)
進行 Raster Operations (光柵運算)
進行 Pixel Update (像素更新)
傳入 Frame Buffer (幀緩沖區)
可編程頂點處理器
頂點處理器是一個可編程的單元,該單元對傳入的頂點屬性,如位置、顏色、紋理坐標等進行操作。頂點處理器的目的是執行傳統的圖形操作,如頂點變換,法線變換/歸一化,紋理坐標的生成,和紋理坐標變換。
頂點處理器只有一個頂點作為輸入,只寫一個頂點作為輸出。頂點的拓撲信息是不可用的。
可編程幾何處理器
幾何處理器允許訪問幾何形狀(線、三角形、四邊形等),它甚至可以創建新的幾何形狀。然而,幾何着色器並不是OpenGL着色器語言規范的一部分。這是一個多廠商的擴展(multivendor extension),目前可用的(開發商)顯卡是NVIDIA GeForce 8系列顯卡。因為這是OpenGL着色器語言中非常重要的一個擴展,所以在這個教程提到它。(如果你不想或不能使用幾何着色器,簡單的忽略它,使用固定功能管線來做)
可編程片元處理器
片元(片段)處理器的目的是用於執行一些傳統的圖形操作。例如計算插值、紋理訪問、紋理應用、霧化、顏色求和等。
語言
OpenGL着色器語言有點類似於C語言。頂點着色器、幾何着色器和片元(片段)着色器都必須有一個入口函數"void main()"
。
我可以在這里寫一個完整的語言規范,但我認為,更好的方法是看學習示例。在下一節中介紹了一個簡單的着色源代碼。每一段都有一個簡單的源代碼下載。下載那些例子和修改它是學習GLSL的一個很好的方式,你自己進行實踐!
你也應該下載官方GLSL語言規范。你可以點擊這里獲取(在”Miscellaneous Documents”下面)。