| void glBlendFunc(GLenum sfactor,GLenum dfactor) |
| 常数 | 相关因子 | 融合因子结果 |
| GL_ZERO | 源因子或目的因子 | (0,0,0,0) |
| GL_ONE | 源因子或目的因子 | (1,1,1,1) |
| GL_DST_COLOR | 源因子 | (Rd,Gd,Bd,Ad) |
| GL_SRC_COLOR | 目的因子 | (Rs,Gs,Bs,As) |
| GL_ONE_MINUS_DST_COLOR | 源因子 | (1,1,1,1)-(Rd,Gd,Bd,Ad) |
| GL_ONE_MINUS_SRC_COLOR | 目的因子 | (1,1,1,1)-(Rs,Gs,Bs,As) |
| GL_SRC_ALPHA | 源因子或目的因子 | (As,As,As,As) |
| GL_ONE_MINUS_SRC_ALPHA | 源因子或目的因子 | (1,1,1,1)-(As,As,As,As) |
| GL_DST_ALPHA | 源因子或目的因子 | (Ad,Ad,Ad,Ad) |
| GL_ONE_MINUS_DST_ALPHA | 源因子或目的因子 | (1,1,1,1)-(Ad,Ad,Ad,Ad) |
| GL_SRC_ALPHA_SATURATE | 源因子 | (f,f,f,1); f=min(As,1-Ad) |
| void CALLBACK Display() { glClear(GL_COLOR_BUFFER_BIT); // 清屏 glColor4f(0.0, 1.0, 0.0, 0.5); // 绘制矩形 glRectf(0.1, 0.1, 0.6, 0.6); glColor4f(1.0, 1.0, 0.0, 0.7); // 绘制矩形 glRectf(0.4, 0.3, 0.9, 0.8); glFlush(); // 强制绘图完成 } void Init() { glEnable (GL_BLEND); // 启用融合 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);// 产生融合因子 glShadeModel (GL_FLAT); // 设置平面明暗处理 glClearColor (0.0, 0.0, 0.0, 0.0); // 清屏 } |
![]() 图1 有颜色方块的融合 |