OpenGL颜色混合可以帮助我们画出透明图形及其颜色混合后效果。看例子代码吧。
void RenderScene(void)
{
// 设置正面为填充模式
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
glEnable(GL_BLEND);//开启颜色混合模式
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);//设置混合方式
glColor4f(0.0f, 0.0f, 1.0f, 0.3f);
glBegin(GL_POLYGON);
glVertex3f(-0.3f, -0.3f, 0.0f);
glVertex3f(0.2f, -0.3f, 0.0f);
glVertex3f(0.2f, 0.2f, 0.0f) ;
glVertex3f(-0.3f, 0.2f, 0.0f);
glEnd();
glColor4f(0.0f, 1.0f, 0.0f, 0.5f);
glBegin(GL_POLYGON);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.5f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.0f);
glVertex3f(0.5f, 0.0f, 0.0f);
glEnd();
glDisable(GL_BLEND); //关闭模式
// Flush drawing commands
glutSwapBuffers();
glPopMatrix();
}