資源描述:
《OpenGL編程精粹》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、《OpenGL編程精粹》實(shí)驗(yàn)報(bào)告班級(jí):計(jì)科083姓名:許銀學(xué)號(hào):0804641004指導(dǎo)教師:陳永強(qiáng)2011年6月4日一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)本實(shí)驗(yàn),使自己了解OpenGL的有關(guān)原理、算法及系統(tǒng),掌握基本圖形學(xué)顯示程序設(shè)計(jì)方法,及三維圖形程序設(shè)計(jì)方法,還要學(xué)習(xí)OpenGL光源、光照模型、物體材質(zhì)、明暗處理、深度測(cè)試等生成真實(shí)世界的基本方法,為進(jìn)一步學(xué)習(xí)計(jì)算機(jī)輔助設(shè)計(jì)方面的設(shè)計(jì)知識(shí)打下基礎(chǔ),同時(shí)通過(guò)此課程設(shè)計(jì)提高動(dòng)手實(shí)踐能力和學(xué)習(xí)分析能力。二、實(shí)驗(yàn)要求這次課程設(shè)計(jì)的要求是通過(guò)OpenGL編程,模擬太陽(yáng)、地球、月亮三者之間公轉(zhuǎn)與自轉(zhuǎn)的運(yùn)動(dòng)關(guān)系。三、開(kāi)發(fā)環(huán)境基于OpenGL的Micros
2、oftVisualC++6.0四、實(shí)驗(yàn)內(nèi)容//外部變量定義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){?//設(shè)置背景色?glClearColor(0.0,0.0,0.0,0.0);//設(shè)置平滑著色?glShadeModel(GL_SMOOTH);//啟用深度測(cè)試消隱?glEnable(GL_DEPTH_TEST);//全局環(huán)境光?GLfloat?model_ambient[]={0.1,0.1,0.1,1.0};//光源位置?GLfloat?light_position[]={1.0,1.0
6、,1.0,0.0};//光的環(huán)境強(qiáng)度?GLfloat?light_ambient[]={1.0,1.0,1.0,1.0};//光的散射強(qiáng)度?GLfloat?light_diffuse[]={1.0,1.0,1.0,1.0};//光的鏡面強(qiáng)度?GLfloat?light_specular[]={1.0,1.0,1.0,1.0};?//設(shè)置背景色?glClearColor(0.0,0.0,0.0,0.0);?//設(shè)置平滑著色?glShadeModel(GL_SMOOTH);?//啟用深度測(cè)試消隱?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