本節書摘來自華章出版社《opengl程式設計指南》一書中的第2章,第2.1節,作者 bill licea-kane ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
現代opengl渲染管線嚴重依賴着色器來處理傳入的資料。如果不使用着色器,那麼用opengl可以做到的事情可能隻有清除視窗内容了,可見着色器對于opengl的重要性。在opengl 3.0版本以前(含該版本),或者如果你用到了相容模式(compatibility profile)環境,opengl還包含一個固定功能管線(fixed-function pipeline),它可以在不使用着色器的情況下處理幾何與像素資料。從3.1版本開始,固定功能管線從核心模式中去除,是以我們必須使用着色器來完成工作。
無論是opengl還是其他圖形api的着色器,通常都是通過一種特殊的程式設計語言去編寫的。對于opengl來說,我們會使用glsl,也就是opengl shading language,它是在opengl 2.0版本左右釋出的(在之前它屬于擴充功能)。它與opengl的發展是同時進行的,并通常會與每個新版本的opengl一起更新。雖然glsl是一種專門為圖形開發設計的程式設計語言,但是你會發現它與“c”語言非常類似,當然還有一點c++的影子。
本章将介紹編寫着色器的方法,以循序漸進的方式講解glsl,讨論如何編譯着色器并且與應用程式相結合,以及如何将應用程式中的資料傳遞到不同的着色器中。