顏色混合(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鍵重置聚光燈參數