收藏 分销(赏)

第8讲-使用光照及材质.doc

上传人:仙人****88 文档编号:7731239 上传时间:2025-01-14 格式:DOC 页数:4 大小:38.50KB 下载积分:10 金币
下载 相关 举报
第8讲-使用光照及材质.doc_第1页
第1页 / 共4页
第8讲-使用光照及材质.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
  使用了光照和材质可以使物体更逼真,具有立体感。例4就是没有使用光照使呈现在我们眼前的物体茶壶和立方体没有立体感。   例6:绘制三个使用不同材质的球体。 #include <windows.h> #include <GL/glut.h> GLfloat light_position[] = {0.0,3.0,6.0,0.0}; GLfloat no_mat[] = {0.0,0.0,0.0,1.0}; GLfloat mat_grey_ambient[] = {0.5,0.5,0.5,1.0}; GLfloat mat_red_ambient[] = {0.0,0.0,1.0,1.0}; GLfloat mat_diffuse[] = {0.8,0.2,0.5,1.0}; GLfloat mat_specular[] = {1.0,1.0,1.0,1.0}; GLfloat no_shininess[] = {0.0}; GLfloat low_shininess[] = {5.0}; GLfloat high_shininess[] = {100.0}; GLfloat mat_emission[] = {0.3,0.2,0.2,0.0}; void myInit(void) {  glLightfv(GL_LIGHT2,GL_POSITION,light_position);//设置光源  glEnable(GL_DEPTH_TEST);  glDepthFunc(GL_LESS);//指定深度比较中使用的数值  glEnable(GL_LIGHTING);  glEnable(GL_LIGHT0);  glShadeModel(GL_SMOOTH); } void display(void) {  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);  glPushMatrix();  /*为光照模型指定材质参数*/  glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);  glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);  glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);  glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);  glColorMaterial(GL_FRONT,GL_AMBIENT);//使材质色跟踪当前颜色  glEnable(GL_COLOR_MATERIAL);  /*第一个球形*/  glPushMatrix();  glColor3fv(no_mat);  glTranslatef(-2.5,1.5,0.0);  glRotatef(15.0,1.0,0.0,0.0);  glutSolidSphere(1.2,20.0,20.0);  glPopMatrix();  /*第二个球形*/  glPushMatrix();  glColor3fv(mat_grey_ambient);  glRotatef(15.0,1.0,0.0,0.0);  glutSolidSphere(1.2,20.0,20.0);  glPopMatrix();  /*第三个球形*/  glPushMatrix();  glColor3fv(mat_red_ambient);  glTranslatef(2.5,-1.5,0.0);  glRotatef(15.0,1.0,0.0,0.0);  glutSolidSphere(1.2,20.0,20.0);  glPopMatrix();  glDisable(GL_COLOR_MATERIAL);  glPopMatrix();  glFlush(); } void myReshape(int w,int h) {  glViewport(0,0,(GLsizei)w,(GLsizei)h);  glMatrixMode(GL_PROJECTION);  glLoadIdentity();  if(w <= h)   glOrtho(-5.5,5.5,-5.5*(GLfloat)h/(GLfloat)w,5.5*(GLfloat)h/(GLfloat)w,-5.5,5.5);  else   glOrtho(-5.5*(GLfloat)w/(GLfloat)h,5.5*(GLfloat)w/(GLfloat)h,-5.5,5.5,-5.5,5.5);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity(); } int main(int argc,char ** argv) {  /*初始化*/  glutInit(&argc,argv);  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);  glutInitWindowSize(400,400);  glutInitWindowPosition(100,100);  /*创建窗口*/  glutCreateWindow(" Light&Material ");  /*绘制与显示*/  myInit();  glutReshapeFunc(myReshape);  glutDisplayFunc(display);  glutMainLoop();  return 0; }   函数myInit中:   ·glLight设置光源的参数。有三个参数,第一个参数指定光照的数目,最大为8。第二个参数为光照的单值光源参数。第三个参数为赋给第二个参数的值,本例中即为将light_position的值赋值给GL_POSITION。   display函数中:   ·glMaterial为光照模型指定材质参数。第一个参数为改变材质的面,其值必为GL_FRONT, GL_BACK或GL_FRONT_AND_BACK中的一个。第二个参数为需要改变的材质参数。第三个参数为赋给参数二的值或指向值的指针。本例中均为指针。   ·glColorMateria使材质色跟踪当前颜色。第一个参数指定哪一个面需要使材质色跟踪当前颜色。第二个参数指定哪个参数需要跟踪颜色。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服