资源描述:
《OpenGL编程轻松入门之特殊效果操作》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、OpenGL编程轻松入门之特殊效果操作2006-05-1911:00作者:黄燕出处:天极开发责任编辑:方舟每个物体在不同的环境在会有不同的视觉效果。为了使效果更加真实需要增加特殊效果。 例8:绘制三个互相重叠的矩形,这三个矩形从左到右分别为绿、红、蓝。其中红色、蓝色矩形的透明度分别为50%的透明度,即alpha值为0.5,如图九所示。#include#includevoidmyInit(void){ glClearColor(0.2,0.8,0.8,0.
2、0);//将背景设置为湖蓝色 glEnable(GL_BLEND);//激活GL_BLEND glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);//指定像素的数学算法 glEnable(GL_FLAT);}voidmyDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); /*绘制一个绿色的矩形alpha=1.0*/ glColor4f(0.0,1.0,0.0,1.0); glBegin(GL_POLYGON); g
3、lVertex3f(-0.75,0.5,0.0); glVertex3f(-0.75,-0.75,0.0); glVertex3f(0.5,-0.75,0.0); glVertex3f(0.5,0.5,0.0); glEnd(); /*绘制一个红色的矩形alpha=0.5*/ glColor4f(1.0,0.0,0.0,0.5); glBegin(GL_POLYGON); glVertex3f(-0.25,1.0,0.0); glVertex3f(-0.25,-0.25,0.0); glVerte
4、x3f(1.0,-0.25,0.0); glVertex3f(1.0,1.0,0.0); glEnd(); /*绘制一个蓝色的矩形alpha=0.5*/ glColor4f(0.0,0.0,1.0,0.5); glBegin(GL_POLYGON); glVertex3f(0.25,1.5,0.0); glVertex3f(0.25,0.25,0.0); glVertex3f(1.5,0.25,0.0); glVertex3f(1.5,1.5,0.0); glEnd(); glFlush();}v
5、oidmyReshape(intw,inth){ glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w6、1.5,1.5,-1.5,1.5); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(-0.4,0.0,0.0);}intmain(intargc,char**argv){ /*初始化*/ glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE
7、GLUT_RGB); glutInitWindowSize(300,400); glutInitWindowPosition(200,
8、200); /*创建窗口*/ glutCreateWindow("BLENDPOLYGON"); /*绘制与显示*/ myInit(); glutReshapeFunc(myReshape); glutDisplayFunc(myDisplay); /*进入GLUT事件处理循环*/ glutMainLoop(); return(0);}图九:三个互相重叠的矩形 ·glBlendFunc(GLenumsfactor,GLenumdfactor)指定像素算法。sfactor指定红,绿,蓝及alpha
9、源混合因素是如何计算的。dfactor指定红,绿,蓝及alpha目标混合因素是如何计算的。 例9:绘制一个被雾化的圆锥体,如图十所示,为了观察不同的雾化参数,程序中加入了键盘操作。"shift+1","shift+2"键分别增加和减弱雾化浓度,"shift+3"设置雾化的起始点和终止点,"shift+4"和"shift+5"键改变雾化方程,"shift+6"将雾化颜色由白改为绿色,如图十一所示。#include#includeGLfloa