一、OpenGL的渲染流程架構

三種渲染管線的傳遞方式:attribute(屬性)、texture(紋理) 、uniform(統一)
圖元裝配(primitive assembly):下圖 "OpenGL 基本圖元" 的9中圖元鏈接方式。
片元着色器 --> 逐個片元(片段)操作 --> 幀緩沖區 --> render 顯示器
二、簡單使用
1)正投影 2D
GLFrumstum::SetOrthographic(GLFloat xMin,GLFloat xMax,GLFloat yMin,GLFloat yMax,GLFloat zMin,GLFloat zMax);// 大小 只要能把要看到的視圖裝進去就可以,具體大小並不影響。

2)透視投影 3D
CLFrustum::SetPerspective(float fFov , float fAspect ,float fNear ,float fFar);
/* GLFrustum類通過setPerspective ⽅方法為我們構建⼀一個平截頭體。 參數:
fFov:垂直⽅方向上的視場⻆角度
fAspect:窗⼝口的寬度與⾼高度的縱橫⽐比
fNear:近裁剪⾯面距離 fFar:遠裁剪⾯面距離
縱橫⽐比 = 寬(w)/⾼高(h) */

3)存儲着色器初始化 - 了解
1、單元着色器 GLT_SHADER_IDENTITY
GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
// 參數1:存儲着色器種類 - 單元着色器 GLT_SHADER_IDENTITY 參數2:顏色
2、平面着色器 GLT_SHADER_FLAT
GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLFloat mvp[16],GLfloat vColor[4]);
// 參數1:存儲着色器種類 - 平面着色器 GLT_SHADER_FLAT 參數2:允許變化的4*4矩陣 參數3:顏色
3、上色着色器 GLT_SHADER_SHADER
GLShaderManager::UserStockShader(GLT_SHADER_SHADER,GLFloat mvp[16]);
// 參數1:存儲着色器種類 - 上色着色器 GLT_SHADER_SHADER 參數2:允許變化的4*4矩陣
// 使用場景:在繪制圖形時,可以應用變換(模型/投影變換) 顏色將會平滑的插入到頂點之間,稱為平滑着色。
4、默認光源着色器 GLT_SHADER_DEFAULT_LIGHT
使⽤用場景: 在繪制圖形時, 可以應⽤用變換(模型/投影變化) 這種着色器會使繪制的圖形產生陰影和光照的效果。
5、點光源着色器 GLT_SHADER_POINT_LIGHT_DIEF
// 使⽤用場景: 在繪制圖形時, 可以應⽤變換(模型/投影變化) 這種着色器會使繪制的圖形產生
陰影和光照的效果,它與默認光源着色器⾮常類似,區別只是光源位置可能是特定的。
6、紋理替換矩陣着色器 GLT_SHADER_TEXTURE_REPLACE
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
/* 參數1: 存儲着⾊器種類-紋理理替換矩陣着⾊器 GLT_SHADER_TEXTURE_REPLACE
參數2: 模型4*4矩陣
參數3: 紋理單元
// 使⽤用場景: 在繪制圖形時, 可以應⽤變換(模型/投影變化)這種着⾊器通過給定的模型視圖投影矩陣。使⽤紋理單元來進⾏顏⾊填充,其中每個像素點的顏⾊是從紋理中獲取。
7、紋理調整着色器 GLT_SHADER_TEXTURE_MODULATE
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
/* 參數1: 存儲着⾊色器器種類-紋理理調整着⾊器 GLT_SHADER_TEXTURE_MODULATE
參數2: 模型4*4矩陣
參數3: 顏⾊色值
參數4: 紋理理單元 *?
// 使⽤場景: 在繪制圖形時, 可以應⽤變換(模型/投影變化)這種着⾊器通過給定的模型視圖投影矩陣. 着⾊器將⼀個基本⾊乘以⼀個取⾃紋理單元 nTextureUnit 的紋理.將顏⾊與紋理進行顏⾊混合后才填充到⽚段中。
8、紋理光源着色器 GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,G Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
/* 參數1: 存儲着⾊器種類-紋理光源着⾊器
參數2: 模型4*4矩陣
參數3: 投影4*4矩陣
參數4: 點光源位置
參數5: 顏⾊值(⼏何圖形的基本色)
參數6: 紋理單元 */
// 使⽤場景: 在繪制圖形時, 可以應用變換(模型/投影變化)這種着⾊器通過給定的模型視圖投影矩陣. 着⾊器將一個紋理通過漫反射照明計算進⾏調整(相乘)。
三、OpenGL基本圖元連接方式
1)OpenGL 基本圖元

OpenGL 基本圖元連接方式:

2)簡單使用 - 了解
1、OpenGL 點/線

2、OpenGL 三角形
對於OpenGL 光柵化最歡迎的是三⻆形。3個頂點就能構成一個三⻆形,三⻆形類型來⾃於頂點,並不是所有的三角形都是正三⻆形

3、OpenGL 三角形環繞方式
OpenGL 默認為 逆時針方向環繞的多邊形為正面。這就意味着圖中左邊是正面,右邊是反面。
glFrontFace(GL_CW);

4、 OpenGL 三角形帶
對於很多表⾯或者形狀⽽言,我們會需要繪制⼏個相連的三⻆形. 這是我們可以使⽤GL_TRIANGLE_STRIP 圖元繪制⼀串相連三⻆形,從⽽節省⼤量的時間

5、OpenGL三角形扇
對於很多表⾯或者形狀⽽言,我們會需要繪制⼏個相連的三⻆形。我們可以使⽤ GL_TRIANGLE_FAN 圖元繪制一組圍繞一個中⼼點相連的三⻆形

6、OpenGL 工具類 GLBatch -
GLBatch - GLTool 中的一個簡單容器

