OpenGL实验二.docVIP

  • 11
  • 0
  • 约4.56千字
  • 约 6页
  • 2016-03-31 发布于湖北
  • 举报
OpenGL实验二.doc

计算机 学院 12计算机科学与技术 专业 3班 学号3112005883 姓名:曲绍霖 教师评定: 实验二 光照模型的实现 一、实验目的 掌握OpenGL的光照及材质效果设置方法Windows xp 开发环境:VC++6.0以及GLUT 图形交互设备:鼠标和键盘 四、实验内容 在实验一的基础上理解并实现添加各种光(环境光,发散光,镜面光,聚光),使效果更逼真以接近实际环境。 1、打开灯光,设置灯光的位置、方向、类别、颜色和衰减,并改变其值,观察效果的变化。 2、实现旋转和移动灯光。 3、设置材质,了解材质和光照如何相互影响。 五、存在的问题和感想 在教科书的基础上增加光照的效果,难度不算太大,,在光照的效果中,用户可以编辑两种材质,经过光源的添加后,使得材质的形象更突出,用户可以自由移动光源位置达到想要的效果,这次实验也是对OpenGL学习加深了认识 六、实现代码 #includewindows.h #include stdlib.h #include GL/glew.h #include GL/glut.h static int xRot=0; static int yRot=0; int iModel=1; void init(void){ // 定义光源,它是一种白色的光源 GLfloat ambient[]={0.0,0.0,0.0,1.0}; GLfloat diffuse[]={1.0,1.0,1.0,1.0}; GLfloat specular[]={1.0,1.0,1.0,1.0}; GLfloat lmodel_ambient[]={0.4,0.4,0.4,1.0}; GLfloat local_view[]={0.0}; glClearColor(1.0,1.0,1.0,0.0); glEnable(GL_DEPTH_TEST);//这句是启用深度测试,这样,在后面的物体会被挡着 glShadeModel(GL_SMOOTH); glLightfv(GL_LIGHT0,GL_AMBIENT,ambient);//过很多次反射后最终遗留在环境中的光线强度(颜色) glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse);//漫反射后最终遗留在环境中的光线强度(颜色) glLightfv(GL_LIGHT0,GL_SPECULAR, specular);//镜面反射后最终遗留在环境中的光线强度(颜色) glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient); glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER,local_view); glEnable(GL_LIGHTING);//在后面的渲染中使用光照 glEnable(GL_LIGHT0);//使用第0号光照 } void myDisplay(void){ //定义球体材质为翡翠 GLfloat no_mat[]={0.0,0.0,0.0,1.0}; GLfloat mat_ambient[]={0.0215,0.1745,0.0215,0.55}; GLfloat mat_ambient_color[]={0.1215,0.2745,-0.5215,0.55}; GLfloat mat_diffuse[]={0.07568,0.61424,0.07568,0.55}; GLfloat mat_specular[]={0.633,0.727811,0.633,0.55}; GLfloat no_shininess[]={0.0}; GLfloat low_shininess[]={76.8}; GLfloat high_shininess[]={12.8}; GLfloat mat_emission[]={0.3,0.2,0.2,0.0}; // 定义所在光源位置 GLfloat position[]={0.0,0.0,1.5,1.0}; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0); //设置可动光源位置 glPushMatrix(); glRotated((GLdouble)xRot,1.0,0.0,0.0); glRotated((GLdouble)yRo

文档评论(0)

1亿VIP精品文档

相关文档