OpenGL入門(六)-- OpenGL 固定存儲著色器的理解使用

使用固定存儲著色器的好處是,你不需要知道渲染過程中到底是頂點著色器還是片元著色器打掘,因此绊率,你不需要考慮在傳遞數據時,該用哪種方式傳遞數據媳荒,你只需要傳遞存儲著色器所需要的的數據到參數列表就可以了抗悍,都是OpenGL底層已經封裝好的API。接下來钳枕,我們來說說存儲著色器缴渊。

--

單元著色器(Identity)

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

單元著色器:

  • 只是簡單地使用默認笛卡爾坐標系(坐標范圍(-1.0,1.0))鱼炒。所有的片段都應用同一種顏色衔沼,幾何圖形為 實心和未渲染的。
  • 需要設置存儲著色器一個屬性:GLT_ATTRIBUTE_VERTEX(頂點分量)
  • 參數2:vColor[4],你需要的顏色

使用場景:繪制默認OpenGL坐標系(-1,1)下圖形指蚁,圖形所有片段都會以一種顏色填充菩佑。

--

平面著色器

GLShaderManager::UserStockShader(GLT_SHADER_FLAT,GLfloat mvp[16],GLfloat vColor[4]);
  • 參數1:平面著色器
  • 參數2:允許變化的44矩陣
  • 參數3:顏色*
    它將統(tǒng)一著色器進行了拓展。允許為幾何圖形變換指定一個 4 * 4 變換矩陣凝化。經常被稱為“模型視圖投影矩陣”

使用場景:在繪制圖形時稍坯,可以應用變換(模型變換/投影變換)

--

上色著色器

GLShaderManager::UserStockShader(GLT_SHADER_SHADED,GLfloat mvp[16]);
  • 在幾何圖形中應用的變換矩陣。
  • 需要設置存儲著色器的GLT_ATTRIBUTE_VERTEX(頂點分量) 和 GLT_ATTRIBUTE_COLOR(顏色分量) 2個屬性搓劫。顏色值將被平滑地插入頂點之間(平滑著色)

使用場景:在繪制圖形時劣光,可以應用變換(模型變換/投影變換),顏色將會平滑的插入到頂點之間稱為平滑著色

--

默認光源著色器

GLShaderManager::UserStockShader(GLT_SHADER_DEFAULT_LIGHT,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vColor[4]);
  • 參數1:默認光源著色器
  • 參數2:模型視圖矩陣
  • 參數3:投影矩陣
  • 參數4:顏色值
    這種著色器,是對象產生陰影和關照的效果糟把。
    需要設置存儲著色器的GLT_ATTRIBUTE_VERTEX(頂點分量) 和 GLT_ATTRIBUTE_NORMAL(表面法線)

使用場景:在繪制圖形時绢涡,可以應用變換(模型變換/投影變換),這種著色器會使繪制的圖形產生陰影和光照的效果

--

點光源著色器

GLShaderManager::UserStockShader(GLT_SHADER_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vColor[4]);
  • 參數1:點光源著色器
  • 參數2:模型視圖矩陣
  • 參數3:投影矩陣
  • 參數4:視點坐標光源位置
  • 參數5:顏色值
    點光源著色器和默認光源著色器很相似遣疯,區(qū)別在于:光源位置是特定的雄可。同樣需要設置存儲著色器的GLT_ATTRIBUTE_VERTEX(頂點分量)GLT_ATTRIBUTE_NORMAL(表面法線)

使用場景:在繪制圖形時,可以應用變換(模型變換/投影變換)缠犀,這種著色器會使繪制的圖形產生陰影和光照的效果数苫,它與默認的光源著色器非常類似,區(qū)別只是光源位置可能是特定的

--

紋理替換矩陣著色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_REPLACE,GLfloat mvMatrix[16],GLint nTextureUnit);
  • 參數1:存儲著色器種類-紋理替換矩陣著色器
  • 參數2:顏色值
  • 參數3:紋理單元
  • 著色器通過給定的模型視圖投影矩陣辨液,使用綁定到nTextureUnit(紋理單元) 指定紋理單元的紋理對幾何圖形進行變化虐急。
  • 片段顏色:是直接從紋理樣本中直接獲取的。
  • 需要設置存儲著色器的GLT_ATTRIBUTE_VERTEX(頂點分量)GLT_ATTRIBUTE_NORMAL(表面法線)

使用場景:在繪制圖形時滔迈,可以應用變換(模型變換/投影變換)止吁,這種著色器通過給定的模型視圖投影矩陣,使用紋理單元來進行顏色填充燎悍,其中每個像素點的顏色是從紋理中獲取敬惦。

--

紋理調整著色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_MODULATE,GLfloat mvMatrix[16],GLfloat vColor[4],GLint nTextureUnit);
  • 參數1:存儲著色器種類-紋理調整著色器
  • 參數2:模型4*4矩陣
  • 參數3:顏色值
  • 參數4:紋理單元
  • 將一個基本色 乘以 一個取自紋理單元 nTextureUnit的紋理。
  • 需要設置存儲著色器的GLT_ATTRIBUTE_VERTEX(頂點分量)GLT_ATTRIBUTE_TEXTURE0(紋理坐標)

使用場景:在繪制圖形時谈山,可以應用變換(模型變換/投影變換)俄删,這種著色器通過給定的模型視圖投影矩陣,著色器講一個基本色乘以一個取自紋理單元nTextureUnit的紋理奏路,將顏色與紋理進行顏色混合后才填充到片段中畴椰。

--

紋理光源著色器

GLShaderManager::UserStockShader(GLT_SHADER_TEXTURE_POINT_LIGHT_DIEF,GLfloat mvMatrix[16],GLfloat pMatrix[16],GLfloat vLightPos[3],GLfloat vBaseColor[4],GLint nTextureUnit);
  • 參數1:紋理光源著色器
  • 參數2:投影矩陣
  • 參數3:視覺空間中的光源位置
  • 參數4:幾何圖形的基本色
  • 參數5:將要使用的紋理單元
  • 將一個紋理通過漫反射照明計算機進行調整(相乘)。光線在視覺空間中的位置是給定的鸽粉。
  • 需要設置存儲著色器的GLT_ATTRIBUTE_VERTEX(頂點分量)GLT_ATTRIBUTE_TEXTURE0(紋理坐標)斜脂、GLT_ATTRIBUTE_NORMAL(表面法線)

使用場景:在繪制圖形時,可以應用變換(模型變換/投影變換)潜叛,這種著色器通過給定的模型視圖投影矩陣秽褒,著色器將一個紋理通過漫反射照明計算進行調整(相乘)壶硅。

--
系列連載

OpenGL入門(一)-- 圖形API簡介與作用
OpenGL入門(二)-- 快速了解OpenGL下的專業(yè)名詞
OpenGL入門(三)-- OpenGL坐標系解析與坐標變換
OpenGL入門(四)-- OpenGL坐標系與坐標變換
OpenGL入門(五)-- OpenGL渲染流程圖解析
OpenGL入門(六)-- OpenGL 固定存儲著色器的理解使用
OpenGL入門(七)-- 圖形圖像渲染中的深度緩沖區(qū)
OpenGL入門(八)-- OpenGL向量和矩陣簡介
OpenGL入門(九)-- OpenGL 紋理簡單介紹

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末威兜,一起剝皮案震驚了整個濱河市销斟,隨后出現的幾起案子,更是在濱河造成了極大的恐慌椒舵,老刑警劉巖蚂踊,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異笔宿,居然都是意外死亡犁钟,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門泼橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涝动,“玉大人,你說我怎么就攤上這事炬灭〈姿冢” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵重归,是天一觀的道長米愿。 經常有香客問我,道長鼻吮,這世上最難降的妖魔是什么育苟? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮椎木,結果婚禮上违柏,老公的妹妹穿的比我還像新娘。我一直安慰自己香椎,他們只是感情好勇垛,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著士鸥,像睡著了一般闲孤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烤礁,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天讼积,我揣著相機與錄音,去河邊找鬼脚仔。 笑死勤众,一個胖子當著我的面吹牛,可吹牛的內容都是我干的鲤脏。 我是一名探鬼主播们颜,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吕朵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窥突?” 一聲冷哼從身側響起努溃,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阻问,沒想到半個月后梧税,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡称近,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年第队,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨秆。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凳谦,死狀恐怖,靈堂內的尸體忽然破棺而出衡未,到底是詐尸還是另有隱情尸执,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布眠屎,位于F島的核電站剔交,受9級特大地震影響,放射性物質發(fā)生泄漏改衩。R本人自食惡果不足惜岖常,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葫督。 院中可真熱鬧竭鞍,春花似錦、人聲如沸橄镜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洽胶。三九已至晒夹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姊氓,已是汗流浹背丐怯。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翔横,地道東北人读跷。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像禾唁,于是被迫代替她去往敵國和親效览。 傳聞我的和親對象是個殘疾皇子无切,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354