
顏色混合(alpha)可實現透明的視角效果,可以模擬液體、玻璃等.當你啟動混合OpenGL將輸入源的顏色與和在幀緩存裏的顏色混合
| 函式 | 簡介 |
| glEnable(GL_BLEND); | 啟用混合 |
| glDisable(GL_BLEND); | 禁用混合 |
| 函式 | 簡介 |
| Void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); | 設定顏色和透明度 |
| red, green, blue | 顏色 |
| alpha | 透明度數值範圍:0.0f-1.0f
0:全透明 1:完全不透明 |
函式示例
- glEnable(GL_BLEND);// 啟用混合
- glDepthMask(GL_FALSE);// 將深度環存設置為只讀
- glBlendFunc(GL_SRC_ALPHA,GL_ONE); // 透明效果
- glColor4f(1.0f, 1.0f, 1.0f,alpha);//月球模型顏色
- auxSolidSphere(1.0f);// 繪畫
- glDepthMask(GL_TRUE);// 將深度環存設置為可讀可寫
- glDisable(GL_BLEND);// 禁用混合
| 混合函式 | 簡介 |
| void glBlendFunc (GLenum sfactor, GLenum dfactor); | 設定來源和目標混合係數 |
| sfactor | 輸入源數據的混合係數 |
| dfactor | 當前幀緩存的混合係數 |
| 混合係數 | 簡介 |
| GL_ZERO | 將顏色設為{0,0,0,0} |
| GL_ONE | 不改變當前顏色(r,g,b,a)*(1,1,1,1) |
| GL_SRC_COLOR | 目標與來源相乘dest (r,g,b,a)* sour (r,g,b,a) |
| GL_DST_COLOR | 來源與目標相乘sour (r,g,b,a)* dest (r,g,b,a) |
| GL_ONE_MINUS_SRC_COLOR | (r,g,b,a)*((1,1,1,1)- sour(r,g,b,a)) |
| GL_ONE_MINUS_DST_COLOR | (r,g,b,a)*((1,1,1,1)- dest(r,g,b,a)) |
| GL_SRC_ALPHA | (r,g,b,a) * sour(alpha) |
| GL_DST_ALPHA | (r,g,b,a) * dest(alpha) |
| GL_ONE_MINUS_SRC_ALPHA | (r,g,b,a) * (1- sour(alpha)) |
| GL_ONE_MINUS_DST_ALPHA | (r,g,b,a) * (1- dest(alpha)) |
| GL_SRC_ALPHA_SATURATE | (r,g,b,a) *MIN (sour(alpha),1-dest(alpha)) |
| 函式 | 簡介 |
| glEnable(GL_DEPTH_TEST); | 打開深度檢測(Z軸緩存), 一定要調用.保證光照正確繪製和模形前後正確繪製 |
Alpha演示程式示例,分別有太陽,地球和月球.下載程式
- 按+/-鍵增加或減小月球透明度
- 按SPACE(空格)鍵啟用或禁用聚光燈
- 按UP/DOWN鍵相機前後移動
- 按LEFT/RIGHT鍵相機左右旋轉
- 按F1鍵打開幫助
- 按ESC鍵重置聚光燈參數
