顧名思義,為了渲染出不同透明度的級別,我們需要開啟混合。
step1: 需要啟用混合(blending),通過gl_blend
glenable(gl_blend);
step2:告知opengl 如何進行blendingvoid glblendfunc(glenum sfactor, glenum dfactor);
詳細分析:以下為計算混合的方程式 c¯
我們有兩個方塊,我們希望在紅色方塊上繪製綠色方塊。紅色方塊會成為目標顏色(它會先進入顏色緩衝),我們將在紅色方塊上繪製綠色方塊。
那麼問題來了:我們怎樣來設定因子呢?我們起碼要把綠色方塊乘以它的alpha值,所以我們打算把fs
rc設定為源顏色向量的alpha值:0.6。接著,讓目標方塊的濃度等於剩下的alpha值。如果最終的顏色中綠色方塊的濃度為60%,我們就把紅色的濃度設為40%(1.0 – 0.6)。所以我們把fd
esti
nati
on設定為1減去源顏色向量的alpha值。方程將變成: c¯
resu
lt=⎛
⎝⎜⎜⎜
0.01.0
0.00.6⎞⎠
⎟⎟⎟∗
0.6+⎛⎝
⎜⎜⎜1.0
0.00.0
1.0⎞⎠⎟
⎟⎟∗(
1−0.6)
最終方塊結合部分包含了60%的綠色和40%的紅色,得到一種髒兮兮的顏色:
最後的顏色被儲存到顏色緩衝中,取代先前的顏色。
step3:選擇合適的選項因子 為函式 glblendfunc(glenum sfactor, glenum dfactor)
也可以為rgb和alpha通道各自設定不同的選項,使用glblendfuncseperate:
glblendfuncseperate(gl_src_alpha, gl_one_minus_src_alpha,gl_one, gl_zero);
這個方程就像我們之前設定的那樣,設定了rgb元素,但是只讓最終的alpha元素被源alpha值影響到。
void glblendequation(glenum mode)允許我們設定這個操作,有3種可行的選項:
有幾個注意點:為了解決互為半透明物體的透視效果正確,並且深度快取沒有問題。
OpenGL混合模式
glblendfunc是這樣 第乙個引數指出源圖元的alpha的取值計算方法,第二個引數指出目標處的alpha的計算方法。opengl會把源顏色和目標顏色各自取出,並乘以乙個係數 源顏色乘以的係數稱為 源因子 目標顏色乘以的係數稱為 目標因子 然後相加,這樣就得到了新的顏 色。也可以不是相加,新版本...
OpenGL 混合功能
核心 void renderscene glfloat vgreen glfloat vblue glfloat vblack 繪製四個固定矩形 glt shader identity 單元著色器 shadermanager.usestockshader glt shader identity,vr...
opengl渲染管線
學習著色器,並理解著色器的工作機制,就要對opengl的固定功能管線有深入的了解。首先要知道幾個opengl的術語 渲染 rendering 計算機根據模型 model 建立影象的過程。模型 model 根據幾何圖元建立的物體 object 幾何圖元 包括點 直線和多邊形等,它是通過頂點 verte...