在OpenGL 3.1之前蓖议,只有一種固定管線著色器窃页,而在3.1之后被啟用晌杰,取而代之的是可編程管線.
初始化
GLShaderManager shaderManager;
shaderManager.InitializeStockShaders();
設(shè)置存儲器的類型:
函數(shù)原型:GLint UseStockShader(GLT_STOCK_SHADER nShaderID, ...);
類型說明
enum GLT_STOCK_SHADER {
GLT_SHADER_IDENTITY = 0,
GLT_SHADER_FLAT,
GLT_SHADER_SHADED,
GLT_SHADER_DEFAULT_LIGHT,
GLT_SHADER_POINT_LIGHT_DIFF,
GLT_SHADER_TEXTURE_REPLACE,
GLT_SHADER_TEXTURE_MODULATE,
GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF,
GLT_SHADER_TEXTURE_RECT_REPLACE,
GLT_SHADER_LAST
};
1.單位著色器/單元著色器: GLT_SHADER_IDENTITY
在坐標(biāo)范圍為(-1.0翼悴, 1.0)內(nèi)刁赦,所有片段都應(yīng)用同一種顏色全度。
參數(shù)1:著色器類型
? 參數(shù)2:顏色參數(shù)
shaderManager.UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
2.平面著色器:GLT_SHADER_FLAT
可以為幾何圖形變化指定一個44變換矩陣煮剧,該矩陣被稱為“模型視圖投影矩陣”。
參數(shù)1:著色器類型
??參數(shù)2:44變換矩陣
??參數(shù)3:顏色參數(shù)
shaderManager.UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
3.上色著色器:GLT_SHADER_SHADED
將顏色平滑的插入到頂點(diǎn)之間将鸵,進(jìn)行平滑著色勉盅。
參數(shù)1:著色器類型
??參數(shù)2:顏色參數(shù)
shaderManager.UserStockShader(GLT_SHADER_SHADED,GLfloat vColor[4]);
4.默認(rèn)光源著色器:GLT_SHADER_DEFAULT_LIGHT
為圖形產(chǎn)生陰影和光照效果。
參數(shù)1:著色器類型
??參數(shù)2:模型視圖矩陣
??參數(shù)3:投影矩陣
??參數(shù)4:顏色參數(shù)
shaderManager.UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
5.點(diǎn)光源著色器:GLT_SHADER_POINT_LIGHT_DIFF
為圖形產(chǎn)生陰影和光照效果顶掉。與默認(rèn)光源著色器非常類似草娜,區(qū)別在與點(diǎn)光源著色器可以指定光源位置。
參數(shù)1:著色器類型
??參數(shù)2:模型視圖矩陣
??參數(shù)3:投影矩陣
??參數(shù)4:視點(diǎn)坐標(biāo)光源位置
??參數(shù)5:顏色參數(shù)
shaderManager.UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
6.紋理替換矩陣著色器:GLT_SHADER_TEXTURE_REPLACE
通過給定的模型視圖投影矩陣痒筒,使用紋理單元來進(jìn)行填充宰闰,其每個像素點(diǎn)的顏色是從紋理中獲取。
參數(shù)1:著色器類型
??參數(shù)2:模型視圖矩陣
??參數(shù)3:紋理單元
shaderManager.UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
7.紋理調(diào)整著色器:GLT_SHADER_TEXTURE_MODULATE
通過給定的模型視圖投影矩陣簿透,將一個基本色乘以一個取自紋理單元nTextureUnit的紋理移袍,將顏色與紋理進(jìn)行混合后填充到片段中。
參數(shù)1:著色器類型
??參數(shù)2:模型視圖矩陣
??參數(shù)3:顏色參數(shù)
??參數(shù)4:紋理單元
shaderManager.UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
8.紋理光源著色器:GLT_SHADER_TEXTURE_POINT_LIGHT_DIFF
通過給定的模型視圖投影矩陣老充,將一個紋理通過漫反射照明計算進(jìn)行調(diào)整(相乘)葡盗。
參數(shù)1:著色器類型
??參數(shù)2:模型視圖矩陣
參數(shù)3:視覺空間中的光源位置
??參數(shù)4:幾何圖形的基本色
??參數(shù)5:需要處理的紋理單元
shaderManager.UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
GLShaderManager 預(yù)定義的標(biāo)識符
標(biāo)識符 | 描述 |
---|---|
GLT_ATTRIBUTE_VERTEX | 3分量(x, y, z)頂點(diǎn)位置 |
GLT_ATTRIBUTE_COLOR | 4分量(r, g, b, a)顏色值 |
GLT_ATTRIBUTE_NORMAL | 3分量(x, y, z)表面法線 |
GLT_ATTRIBUTE_TEXTURE0 | 第一對 2 分量(s ,t)紋理坐標(biāo) |
GLT_ATTRIBUTE_TEXTURE1 | 第二對 2 分量(s ,t)紋理坐標(biāo) |