你知道固定管線下有哪些存儲(chǔ)著色器嗎?

在OpenGL 3.0之前,OpenGL包含一個(gè)固定功能的管線,它可以在不適用著色器的情況下,處理幾何與像素?cái)?shù)據(jù)。而在3.1版本開始,固定管線從核心模式去掉,因此,現(xiàn)在需要使用著色器來完成工作。那么,固定管線下到底有哪些著色器呢?下面,我們一起來看一看吧。

  • 使用存儲(chǔ)著色器,我們不需要關(guān)心它的底層是如何實(shí)現(xiàn)的,因?yàn)樗呀?jīng)幫我們封裝好了,直接使用即可。它們有8種,分別是:
    (1)單元著色器
    (2)平面著色器
    (3)上色著色器
    (4)默認(rèn)光源著色器
    (5)點(diǎn)光源著色器
    (6)紋理替換矩陣
    (7)紋理調(diào)整著色器
    (8)紋理光源著色器
    接下來,我們來簡單了解下這幾種存儲(chǔ)著色器著色器,具體的使用會(huì)在后續(xù)博客中來繼續(xù)分析。

在這之前,我們先看下怎么定義和初始化存儲(chǔ)著色器:

//定義存儲(chǔ)著色器
GLShaderMananger shaderMananger;
//初始化存儲(chǔ)著色器
shaderMananger.initalizeStockShaders();

1.單元著色器

GLShaderManager::UserStockShader(GLT_SHADER_IDENTITY,GLfloat vColor[4]);

參數(shù)1:GLT_SHADER_IDENTITY 存儲(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:GLT_SHADER_FLAT 存儲(chǔ)著色器種類-平面著色器
參數(shù)2:允許變化的4*4矩陣
參數(shù)3:顏色

使用場景:在繪制圖形時(shí),可以應(yīng)用變換(模型/投影變化)。

3.平面著色器

GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);

參數(shù)1:GLT_SHADER_SHADED 存儲(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:GLT_SHADER_DEFAULT_LIGHT 存儲(chǔ)著色器種類-默認(rèn)光源著色器
參數(shù)2:模型44矩陣
參數(shù)3:投影4
4矩陣
參數(shù)4:顏色值

使用場景:在繪制圖形時(shí),可以應(yīng)用變換(模型/投影變化),這種著色器會(huì)使繪制的圖形產(chǎn)生陰影和光照的效果。

5.點(diǎn)光源著色器

GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);

參數(shù)1:GLT_SHADER_DEFAULT_LIGHT_DIEF 存儲(chǔ)著色器種類-點(diǎn)光源著色器
參數(shù)2:模型44矩陣
參數(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:GLT_SHADER_TEXTURE_REPLACE 存儲(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:GLT_SHADER_TEXTURE_MODULATE 存儲(chǔ)著色器種類-紋理調(diào)整著色器
參數(shù)2:模型4*4矩陣
參數(shù)3:顏色值
參數(shù)4:紋理單元

使用場景:在繪制圖形時(shí),可以應(yīng)用變換(模型/投影變化),這種著色器通過給定的模型視圖投影矩陣,著色器將一個(gè)基本色乘以一個(gè)取自紋理單元nTextureUnit的紋理,將顏色與紋理進(jìn)行顏色混合后才填充到片段中。

8.紋理調(diào)整著色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);

參數(shù)1:GLT_SHADER_TEXTURE_MODULATE 存儲(chǔ)著色器種類-紋理光源著色器
參數(shù)2:模型44矩陣
參數(shù)3:投影4
4矩陣
參數(shù)4:點(diǎn)光源位置
參數(shù)5:顏色值(幾何圖形的基本色)
參數(shù)6:紋理單元

使用場景:在繪制圖形時(shí),可以應(yīng)用變換(模型/投影變化),這種著?色器器通過給定的模型視圖投影矩陣,著色器將一個(gè)紋理通過漫反射照明計(jì)算進(jìn)?行調(diào)整(相乘)。

  • 喏,以上就是固定管線下的8種存儲(chǔ)著色器啦,如果還有什么缺漏的,歡迎留言糾正,謝謝!

后面的博客會(huì)用一個(gè)Demo簡單的使用以上存儲(chǔ)著色器,歡迎關(guān)注。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容