混合
使能混合
glEnable(GL_BLEND);
混合函数
一般步骤
- 使能深度测试
- 禁用混合
- 绘制远物体
- 深度测试设为只读
- 混合设置
- 绘制近物体
- 深度测试设为读写
示例
void draw_blend() {
set_defaultviewprojection();//默认渲染器需要
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清空缓冲
GLfloat z_far = -1.9*radius_outer;
GLfloat z_near = -1.5*radius_outer;
GLfloat radius = 0.1*radius_outer;
//使能深度测试
glEnable(GL_DEPTH_TEST);
//禁用混合
glDisable(GL_BLEND);
//绘制远物体
glPushMatrix();
glColor3f(1, 0, 0);
glTranslatef(0, 0, z_far);
glutSolidSphere(radius, 20, 20);
glPopMatrix();
//深度测试设为只读
glDepthMask(GL_FALSE);
//混合设置