资源描述:
《OpenGL编程精粹》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《OpenGL编程精粹》实验报告班级:计科083姓名:许银学号:0804641004指导教师:陈永强2011年6月4日一、实验目的通过本实验,使自己了解OpenGL的有关原理、算法及系统,掌握基本图形学显示程序设计方法,及三维图形程序设计方法,还要学习OpenGL光源、光照模型、物体材质、明暗处理、深度测试等生成真实世界的基本方法,为进一步学习计算机辅助设计方面的设计知识打下基础,同时通过此课程设计提高动手实践能力和学习分析能力。二、实验要求这次课程设计的要求是通过OpenGL编程,模拟太阳、地球、月亮三者之间公转与自转的运动关系。三、开发环境基于OpenGL的Micros
2、oftVisualC++6.0四、实验内容//外部变量定义staticGLfloata=3.5;staticGLfloatb=2;staticGLfloatx=0.0;staticGLfloaty=2.0;staticGLfloatspin=0.0;staticGLfloatright=0.0;staticGLfloatleft=0.0;staticGLfloatup=0.0;staticGLfloatdown=0.0;staticsun_rotate=0.0;staticm=0.0;staticn=0.0;staticm_spin=0.0;staticm_x=1.0;st
3、aticm_y=0.0;voidsunfunc(void){ sun_rotate+=2.0; if(sun_rotate>360.0) sun_rotate-=360.0; glutPostRedisplay();}voidrightfunc(void){ right+=2.0; if(right>360) right-=360; glutPostRedisplay();}voidleftfunc(void){ left+=2.0; if(left>360) left-=360; glutPostRedisplay();}voidupfunc(void){ up+=
4、2.0; if(up>360.0) up-=360.0; glutPostRedisplay();}voiddownfunc(void){ down+=2.0; if(down>360.0) down-=360.0; glutPostRedisplay();} voidspinfunc(void){ spin+=0.006; if(spin>360) spin-=360.0; x=a*sin(spin); y=b*cos(spin); glutPostRedisplay();}voidm_spinfunc(void){ m_spin+=2; if(m_spin>360
5、.0) m_spin-=360; m_x=sin(m_spin); m_y=cos(m_spin); glutPostRedisplay();}//初始化voidinit(void){ //设置背景色 glClearColor(0.0,0.0,0.0,0.0);//设置平滑着色 glShadeModel(GL_SMOOTH);//启用深度测试消隐 glEnable(GL_DEPTH_TEST);//全局环境光 GLfloat model_ambient[]={0.1,0.1,0.1,1.0};//光源位置 GLfloat light_position[]={1.0,1.0
6、,1.0,0.0};//光的环境强度 GLfloat light_ambient[]={1.0,1.0,1.0,1.0};//光的散射强度 GLfloat light_diffuse[]={1.0,1.0,1.0,1.0};//光的镜面强度 GLfloat light_specular[]={1.0,1.0,1.0,1.0}; //设置背景色 glClearColor(0.0,0.0,0.0,0.0); //设置平滑着色 glShadeModel(GL_SMOOTH); //启用深度测试消隐 glEnable(GL_DEPTH_TEST); glLightfv(GL_LIG
7、HT0,GL_POSITION,light_position); glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); //光照模型 glLightModelfv(GL_LIGHT_MODEL_AMBIENT,model_ambient);//启用光照 glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); //启用混合 glEnable(GL_BLE