GLSL 程式設計/GLUT
外觀
在本節中,我們將介紹如何使用 C/C++ 實現 GLSL 概念,並以 GLUT 作為基本的 OpenGL 包裝器。
我們將依賴於 OpenGL 程式設計華夏公益教科書 中逐步構建的基礎程式碼模板,用於載入紋理、模型,以及將頂點和制服傳遞給著色器。幾乎所有的編碼都將在著色器中進行。
注意:Android 使用者可能需要檢視 GLUT 包裝器。
當使用著色器重新實現過時的 OpenGL 1.x 功能(如光照)時,我們將嘗試使用類似的變數名稱,以便熟悉先前版本的人可以輕鬆地升級他們的知識。
請注意,這些教程假設您按照此處顯示的順序閱讀它們,即每個教程都假定您熟悉先前教程中介紹的概念和技術。如果您不熟悉 GLSL,至少應該通讀“基礎”部分中的教程。
其中許多教程已可用於 Blender 和 Unity - 如果你可以移植它們,歡迎貢獻!
- 漫反射(關於每個頂點漫反射光照和多種不同型別的燈光源)
- 鏡面反射(關於每個頂點光照)
- 雙面表面(關於雙面每個頂點光照)
- 平滑鏡面反射(關於每個畫素光照)
- 雙面平滑表面(關於雙面每個畫素光照)
- 多重光源(關於用於處理多個燈光源的 for 迴圈)
- 拉絲金屬(關於各向異性鏡面反射)
- 輪廓上的鏡面反射(關於鏡面反射的菲涅耳係數)
- 漫反射天空光(關於半球光照)
- 半透明表面(關於漫反射和背光的前向散射透射)
- 半透明物體(關於對比度降低的漫反射光照和輪廓處漫反射背光的透射)
- 球體的柔和陰影(關於球體本影和半影的渲染)
- 卡通著色(關於非真實感渲染)
- 螢幕疊加(關於從物件空間到螢幕空間的直接變換)
- 公告板(關於檢視對齊的物體投影)
- 非線性變形(關於頂點混合)
- 平面陰影(關於將陰影投影到平面上)
- 鏡子(關於映象物體和使用 alpha 緩衝區進行模板化)
除非另有說明,本頁面上的所有示例原始碼均歸屬公有領域。