| 
				 glEnable(GL_BLEND); //打开融合 
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //设置融合系数 
            //在这里绘制相应的三维统计结果 
        glDisable(GL_BLEND); //关闭融合 
        glDisable(GL_STENCIL_TEST); //关闭蒙板测试 
            //以融合方式显示地板 
    最后,正常显示周围的效果画面和三维统计结果。 
3.4动态阴影的实现 
    使用OpenGL蒙板缓冲区实现平面阴影,关键是利用光源的矢量位置和地板的法线矢量,生成平面阴影投射矩阵。然后: 
glEnable(GL_STENCIL_TEST); //启用蒙板测试 
glStencilFunc(GL_LESS, 2, 0xffffffff);   
        glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); 
glEnable(GL_BLEND); //启动融合 
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
        glDisable(GL_LIGHTING); //关闭灯光 
        glColor4f(0.0, 0.0, 0.0, 0.5); //设置阴影颜色 
  
        glPushMatrix(); 
        glMultMatrixf((GLfloat *) floorShadow); //对显示画面乘上平面阴影投射矩阵 
            //在这里,显示产生阴影的对象 
        glPopMatrix(); 
        glDisable(GL_BLEND); //关闭融合 
        glEnable(GL_LIGHTING); //打开灯光 
glDisable(GL_STENCIL_TEST); //关闭蒙板测试 
4 结语 
    利用OpenGL技术,可以充分利用当前各种具有3D加速功能的显卡,使得开发的显示系统具有实时性和可移植性。文中实现的实时投票结果三维显示,给人以生动、直观的视觉效果。它可以应用到不同的领域,如:投票表决、数据可视、结果统计等。 			
				 |