對於OpenGL中光照和顏色混合的理解

2021-05-21 18:30:28 字數 738 閱讀 4039

摘自《opengl遊戲程式設計》

光照

//光照變數

float ambientlight = ;    //環境光

float diffuselight = ;     

float matdiff = ;    

第乙個變數matambient定義了材質表面對於光線中的環境光分量是如何反應的。此例中,變數中的每乙個值都為1.0,意味市場環境光的紅色、綠色和藍色分量全部都會被此表面所反射。同理,在此例中,散射光的紅色、綠色和藍色分量也都會被表面全部反射。

顏色混合

opengl中的顏色混合可以為場景帶來像透明這樣的視覺效果。利用透明,我們可以模擬水、窗戶、玻璃以及這個世界上其他的我們可以看穿的物體。

當繪製場景時,若想在opengl中正確地進行混合,就要涉及到深度快取的開啟和關閉。為此,我們先在深度快取的正常狀態下繪製所有不透明的物體;然後呼叫gldepthmask()函式將深度快取設為唯讀狀態,這樣就將繪製不透明物體時的深度值保護了起來。在深度快取為唯讀狀態時,對透明物體的繪製不會影響到已經繪製好的不透明物體,因為深度快取不能被改變。但是要記住透明物體仍然會進行深度檢測,與深度快取中的值相比較,如果位於不透明物體的後面,它們也不會被繪製。如果位於不透明物體的前面,透明物體將與不透明物體混合。使用gldepthmask()函式時,如果要設定為唯讀狀態,就向其傳遞gl_false引數值,而如果想設定為正常狀態,則要傳遞gl_true引數值。

OpenGL 光照和材質

opengl 光照和材質 前言 很難受呀,一天又過去了,沒有達到預期的進度,等下寫完這篇部落格,抓緊研究滑鼠實現軌跡球!長路漫漫啊 注 此篇文章建立在mfc環境搭建完成後 1.渲染處理 在opengl中,可以定義頂點的顏色,但如何定義線段的顏色,如何定義平面的顏色,這就需要opengl通過各個頂點的...

學習OpenGL(五)顏色 光照與材質

學習opengl 五 顏色 光照與材質 kezunhai gmail.com 顏色 光照和材質是opengl的重要內容,其中glcolor函式設定當前的顏色,該函式之後繪製的所有頂點 圖形 都使用該顏色。對於乙個點,其顏色就是設定的顏色,而對於一條直線而言,如果兩個頂點的顏色不同,那麼兩點之間線的顏...

OpenGL基本概念入門4 顏色 光照和材質1

1 opengl中的顏色 在未使用光照系統的前提下,我們可以直接為圖元指定顏色。在傳入頂點之前呼叫glcolor函式,就可以為即將指定的頂點設定顏色。例如 glbegin gl s glcolor3ub 255,0,0 glvertex3f 0,1,0 glvertex3f 1,0,1 glvert...