欢迎来到天天文库
浏览记录
ID:22982222
大小:168.35 KB
页数:8页
时间:2018-11-02
《实验五opengl交互快捷菜单学生用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验五:使用键盘、菜单的方式完成对三维物体的交互1.实验目的:理解掌握一个OpenGL程序的常见交互方法---键盘,快捷菜单。2.实验内容.•1)利用现成的绘制立体的API,如glutWireSphere绘制球,glutWireCone绘制椎体,glutWireCube绘制立体,glutWireTorus绘制圆环,glutWireTeapot绘制茶壶,glutWireOctahedron绘制八面体。2)使用键盘、菜单的方式绘制三维物体3)单击鼠标右键在弹出的菜单里可以选择需要绘制的立体以及是wire还是solid填充的,4)按键盘的UP、DOWN、
2、LEFT、RIGHT按键可以旋转坐标系。5)由于Glut提供的多面体API默认半径是l.Of的,使用gIScalef对其进行了放大。显示结果如下:ijkeymenudr^w3objModelWireOrSolidSphereConeCubeTorusDodecahedronTeapotOctahedronTetrahedronZM3、Msny:**//色ilH纟及菜i*pMs^gMgPM=K!MtPl绅teMenuQnyMjj.pjj);一&j.M讲冬PMlPkCy(Sphere’’,1):*»K!-MtMs!M?r?jjfePkCyXGone’,2):豕1MtW曲?屢知玄?xCCube”.3):K!姓A賊MgflM尽PkC乂.Torus’.4):艮t!X(Dodecahedron•’,5);♦运PVy(了eapot’•6)••pKlMtA如M叨冰Pk〔yCOctahedron•••7):wgIwtM辦rahedron••.8):尺jMtMdHgrWjfegkCyCIcosah4、edron".9)DljxgM印Aj=glutGrcateMenu(myMenu);&!•啦蝴-卿賊jy.CWire’.10):一gJ-MtA相Henufotty(’SoIid".11):nMajnMenu=gjutCreatcMenu(myMenu);//创建主菜单w&!jAtAsisj知feM?PMCModeI".nModeMenu):glutAddSublilenuCWireOrSolid'.nWireMenu):glutAttachMenu(GLUT_R16HT.BUTT0N)://将菜单榜定到鼠标右键上p添加特殊键回调函数glutSpec5、iaIFunc(specialKey);//设置按键输入处理回调函数2、增加myMenu菜单回调子函数://菜单回调函数voidmyMenu(intvalue)1gwjJ^feXvaIuc){55551:case2;case3:挪?4:case5:S55S6:case7:iModeI=SPHERE;break;vkAAMMMWWMMWiModel=CONE;break;iModel=CUBE;break;jModel=TORUS;break;iMode!^DODECAHEDRON:break;jJ(g49l=TEAP0T:break;iModel=6、OCTAHEDRON.break;fw*禮wc^sg8:iModei=TETRAHEDRON:break;case9.iModeI=ICOSAHEDRON.break.g轉g10.坤ij,=QL_TRUE.break;.'pase11:bWir^=GLFALSE,break;pdefault:break;)&bd£p§l!Mispjjy0;//重新绘制并在程序开头设置相关变量说明:明朔MODELS{SPHERE=O.pCONE.一CUBE.TORUS.DODECAHEDRON.TEAPOT.OCTAHEDRON,pTETRAHEDRON.ICOSA7、HEDRONp}:GLintiModel=SPHERE;3、添加键盘特殊键控制子函数voidspeciaIKey(intkey.intx.inty)^{if(key=GLUTKEYUP)(xRot^5.Of;}el5Sif(key~GLUT_KEY_DOWN)p8、9、oatyRot-0.Of;//绕y轴旋转角度4、修改相关窗口人小改变时的代码voidReshape(GLintw.6Lin
3、Msny:**//色ilH纟及菜i*pMs^gMgPM=K!MtPl绅teMenuQnyMjj.pjj);一&j.M讲冬PMlPkCy(Sphere’’,1):*»K!-MtMs!M?r?jjfePkCyXGone’,2):豕1MtW曲?屢知玄?xCCube”.3):K!姓A賊MgflM尽PkC乂.Torus’.4):艮t!X(Dodecahedron•’,5);♦运PVy(了eapot’•6)••pKlMtA如M叨冰Pk〔yCOctahedron•••7):wgIwtM辦rahedron••.8):尺jMtMdHgrWjfegkCyCIcosah
4、edron".9)DljxgM印Aj=glutGrcateMenu(myMenu);&!•啦蝴-卿賊jy.CWire’.10):一gJ-MtA相Henufotty(’SoIid".11):nMajnMenu=gjutCreatcMenu(myMenu);//创建主菜单w&!jAtAsisj知feM?PMCModeI".nModeMenu):glutAddSublilenuCWireOrSolid'.nWireMenu):glutAttachMenu(GLUT_R16HT.BUTT0N)://将菜单榜定到鼠标右键上p添加特殊键回调函数glutSpec
5、iaIFunc(specialKey);//设置按键输入处理回调函数2、增加myMenu菜单回调子函数://菜单回调函数voidmyMenu(intvalue)1gwjJ^feXvaIuc){55551:case2;case3:挪?4:case5:S55S6:case7:iModeI=SPHERE;break;vkAAMMMWWMMWiModel=CONE;break;iModel=CUBE;break;jModel=TORUS;break;iMode!^DODECAHEDRON:break;jJ(g49l=TEAP0T:break;iModel=
6、OCTAHEDRON.break;fw*禮wc^sg8:iModei=TETRAHEDRON:break;case9.iModeI=ICOSAHEDRON.break.g轉g10.坤ij,=QL_TRUE.break;.'pase11:bWir^=GLFALSE,break;pdefault:break;)&bd£p§l!Mispjjy0;//重新绘制并在程序开头设置相关变量说明:明朔MODELS{SPHERE=O.pCONE.一CUBE.TORUS.DODECAHEDRON.TEAPOT.OCTAHEDRON,pTETRAHEDRON.ICOSA
7、HEDRONp}:GLintiModel=SPHERE;3、添加键盘特殊键控制子函数voidspeciaIKey(intkey.intx.inty)^{if(key=GLUTKEYUP)(xRot^5.Of;}el5Sif(key~GLUT_KEY_DOWN)p
8、9、oatyRot-0.Of;//绕y轴旋转角度4、修改相关窗口人小改变时的代码voidReshape(GLintw.6Lin
9、oatyRot-0.Of;//绕y轴旋转角度4、修改相关窗口人小改变时的代码voidReshape(GLintw.6Lin
此文档下载收益归作者所有