概要
我们在做与UI或者图形,图片有关的项目时,总会遇到透明度的设置。 opengl也有自己的透明度设置。 值得一提得是,普通的平面图形透明度设置是改变单张平面的显示效果, 而立体图形的呢,这就会使多个平面的图形出现。
效果图
正常立体图
透明度为0.5的
透明度为0.1的
图形设置为绿色时
部分代码的更改
void OpenglWidget::initializeGL()
{
loadGLTextures();
glEnable( GL_TEXTURE_2D );
glShadeModel( GL_SMOOTH );
glClearColor( 0.0, 0.0, 0.0, 0.5 );
glClearDepth( 1.0 );
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
glLightfv( GL_LIGHT1, GL_AMBIENT, lightAmbient );
glLightfv( GL_LIGHT1, GL_DIFFUSE, lightDiffuse );
glLightfv( GL_LIGHT1, GL_POSITION, lightPosition );
glEnable( GL_LIGHT1 );
glColor4f(1, 1, 1, 0.5);
glBlendFunc( GL_SRC_ALPHA, GL_ONE );
}
其实最主要的就是加了
glColor4f(1, 1, 1, 0.5);
glBlendFunc( GL_SRC_ALPHA, GL_ONE );
这两行的代码。
WINGDIAPI void APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
这个函数前三个参数表示色彩值, 分别为red green blue, 而最后一个值 为alpha通道。
前面色彩值的设置决定了立体图形整体的色彩基调。 而最后一个alpha通道 设置区间为0 - 1 , 0表示完全透明,而1表示完全不透明。