OpenGL固定管線下的存儲(chǔ)著色器類型
1.單元著色器
GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);
參數(shù)1:?存儲(chǔ)著色器種類-單元著色器
參數(shù)2:?顏?
使?用場景:?繪制默認(rèn)OpenGL?坐標(biāo)系(-1,1)下圖形.?圖形所有片段都會(huì)以一種顏色填充
2.平?著?器
GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
參數(shù)1:?存儲(chǔ)著色器種類-平?著色器?
參數(shù)2:?允許變化的4*4矩陣
參數(shù)3:?顏?
3.上色著色器
使用場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化).
GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
參數(shù)1:?存儲(chǔ)著色器種類-上?著色器?
參數(shù)2:?允許變化的4*4矩陣
使用場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化)?顏色將會(huì)平滑地插入到頂點(diǎn)之間 稱為平滑著色.
4.默認(rèn)光源著色器
GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
參數(shù)1:?存儲(chǔ)著?器種類-默認(rèn)光源著?器?
參數(shù)2:?模型4*4矩陣
參數(shù)3:?投影4*4矩陣
參數(shù)4:?顏色值
使?場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化)?這種著色器會(huì)使繪制的圖形產(chǎn)生陰影和光照的效果.
5.點(diǎn)光源著色器
GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
參數(shù)1:?存儲(chǔ)著色器種類-點(diǎn)光源著?器?
參數(shù)2:?模型4*4矩陣
參數(shù)3:?投影4*4矩陣
參數(shù)4:?點(diǎn)光源的位置
參數(shù)5:?漫反射顏色值
使?用場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化)?這種著?器會(huì)使繪制的圖形產(chǎn)?陰影和光照的效果.它與默認(rèn)光源著?器?常類似,區(qū)別只是光源位置是特定的.
6.紋理替換矩陣著?器
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
參數(shù)1:?存儲(chǔ)著?器種類-紋理替換矩陣著色器?
參數(shù)2:?模型4*4矩陣
參數(shù)3:?紋理單元
使用場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化)這種著?器通過給定的模型視圖投影矩陣.使用紋理單元來進(jìn)?顏色填充.其中每個(gè)像素點(diǎn)的顏色是從紋理中獲取.
7.紋理調(diào)整著?器
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
參數(shù)1: ?存儲(chǔ)著?器種類-紋理調(diào)整著?器
參數(shù)2: ?模型4*4矩陣
參數(shù)3: ?顏色值
參數(shù)4: ?紋理單元
使用場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化)這種著色器通過給定的模型視圖投影矩陣.?著?器將一個(gè)基本色乘以一個(gè)取?紋理單元nTextureUnit的紋理.將顏色與紋理進(jìn)行顏色混合后才填充到片段中.
8.紋理光源著色器
GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,G Lfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
參數(shù)1:?存儲(chǔ)著色器種類-紋理光源著色器?
參數(shù)2:?模型4*4矩陣
參數(shù)3:?投影4*4矩陣
參數(shù)4:?點(diǎn)光源位置
參數(shù)5:?顏色值(?何圖形的基本色)
參數(shù)6:?紋理單元
使?場景:?在繪制圖形時(shí),?可以應(yīng)用變換(模型/投影變化)這種著?器通過給定的模型視圖投影矩陣.?著?器將?個(gè)紋理通過漫反射照明計(jì)算進(jìn)行調(diào)整(相乘).
OpenGL?基本7種基本圖元
OpenGL 基本圖元
下面的圖示中限佩,常用的是1,2条舔,3,7秦陋,8摔踱,9
1.GL_POINTS
描述:每個(gè)頂點(diǎn)在屏幕上都是單獨(dú)點(diǎn)
示例
2.GL_LINES
描述:每一對頂點(diǎn)定義一個(gè)線段
示例(這里只出現(xiàn)一條線段是因?yàn)檫@個(gè)組成這個(gè)線段的點(diǎn)是兩兩對應(yīng)的蔗包,案例中只有三個(gè)點(diǎn)墩虹,所以只能生成一條線)
3.GL_LINE_STRIP
描述:?個(gè)從第一個(gè)頂點(diǎn)依次經(jīng)過每一個(gè)后續(xù)頂點(diǎn)而繪制的線條
示例
4.GL_LINE_LOOP
描述:和GL_LINE_STRIP相同,但是最后?個(gè)頂點(diǎn)和第一個(gè)頂點(diǎn)連接起來了
示例
5.GL_TRIANGLES
描述:每3個(gè)頂點(diǎn)定義一個(gè)新的三角形
示例
6.GL_TRIANGLE_STRIP(三?形帶)
描述:共用一個(gè)條帶(strip)上的頂點(diǎn)的一組三?角形。對于很多表面或者形狀而言,我們會(huì)需要繪制?個(gè)相連的三?形.?這是我們可以使用GL_TRIANGLE_STRIP圖元繪制一串相連三角形,從?節(jié)省?量的時(shí)間.
優(yōu)點(diǎn):
1.??前3個(gè)頂點(diǎn)指定第1個(gè)三?形之后授嘀,對于接下來的每?個(gè)三?形物咳,只需要再指定1個(gè)頂點(diǎn)锣险。需要繪制?量的三?形時(shí)蹄皱,采?這種?法可以節(jié)省大量的程序代碼和數(shù)據(jù)存儲(chǔ)空間
2.提供運(yùn)算性能和節(jié)省帶寬。更少的頂點(diǎn)意味著數(shù)據(jù)從內(nèi)存?zhèn)鬏數(shù)綀D形卡的速度更快芯肤,并且頂點(diǎn)著色器需要處理的次數(shù)也更少了巷折。
示例
7.GL_TRIANGLE_FAN(三?形扇)
描述:以一個(gè)圓點(diǎn)為中心呈扇形排列,共用相鄰頂點(diǎn)的一組三角形。對于很多表面或者形狀而言,我們會(huì)需要繪制幾個(gè)相連的三?形.?這時(shí)我們可以使用GL_TRIANGLE_FAN圖元繪制?組圍繞?個(gè)中?點(diǎn)相連的三角形
示例