资源描述:
《实验三 OpenGL地简单交互绘制new.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实用文档实验三OpenGL的简单交互绘制一、实验目的1、理解OpenGL坐标系的概念,掌握OpengGL裁剪窗口、视区、显示窗口的概念和它们之间的关系,学会计算世界坐标和屏幕坐标。2、学会OpenGL的简单键盘交互操作。3、学会OpenGL的简单字符绘制。3、进一步掌握OpengGL点、直线、多边形的绘制。二、实验环境硬件要求:PC机,主流配置,最好为独立显卡,显存512M以上。软件环境:操作系统:WindowsXP。语言开发工具:MicrosoftVisualstudio2008,VisualC++。程序框架:Win32应用程序三、实验内容与要求3.1键盘交互1、调出实验一的源代码
2、运行,调整修改使得显示窗口在屏幕中央保持缺省大小(300*300),绘制的矩形在显示窗口中央。如图2-1所示。提示:(1)添加修改窗口位置的函数glutInitWindowPosition(intx,inty);其中(x,y)为窗口左上角在屏幕上的位置。(2)显示窗口的左下角坐标为(-1,-1),右上角坐标为(1,1)。图2-1未修改前的win32初始源程序参考如下:/*myfirstprogram.cpp*/#include"stdafx.h"#include实用文档voiddisplay(void);voidmyreshape(GLsizeiw,GLsizeih)
3、;intAPIENTRY_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);char*argv[]={"hello",""};intargc=2;//must/shouldmatchthenumberofstringsinargvglutInit(&argc,argv);//初始化GLUT库;glutInitDisplayMode(G
4、LUT_SINGLE
5、GLUT_RGB);//设置显示模式;(缓冲,颜色类型)glutInitWindowSize(500,500);glutInitWindowPosition(1024/2-250,768/2-250);glutCreateWindow("Hello");//创建窗口,标题为“hello”;glutDisplayFunc(display);//用于绘制当前窗口;glutMainLoop();//表示开始运行程序,用于程序的结尾;return0;}voiddisplay(void){glClear(GL_COLOR_BUFFER_BIT);//刷新颜色缓冲区glRe
6、ctf(-0.5,-0.5,0.5,0.5);glFlush();//用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行}2、在实验一的基础上添加键盘交互,按W键绘制的矩形上移,按S键矩形下移,按A键矩形左移,按D键矩形右移,如图2-2。参考步骤如下:(1)在主函数里添加注册键盘回调函数glutKeyboardFunc(mykeyboard);此函数可放在glutDisplayFunc(display);后面。实用文档并在程序头部声明添加键盘回调函数:voidmykeyboard(unsignedcharkey,intx,inty);(2)在display()绘制函
7、数中修改绘制矩形代码,用变量代替数值参数。例如:glRectf(-0.5,-0.5,0.5,0.5)改为glRectf(x1,y1,x2,y2);程序前面加上变量声明和初始值,如:floatx1=-0.5,y1=-0.5,x2=0.5,y2=0.5;注意语句的位置。(3)在程序中增加mykeyboard键盘子函数,可放在display()函数之后。并在如下代码中进行修改,实现键盘控制矩形移动,运行程序自行测试。voidmykeyboard(unsignedcharkey,intx,inty){switch(key){case'W':case'w'://矩形对角坐标变量修改使得矩形上移
8、y1+=0.1;y2+=0.1;break;case'S':case's'://矩形对角坐标变量修改使得矩形下移y1-=0.1;y2-=0.1;break;case'A':case'a'://矩形对角坐标变量修改使得矩形左移x1-=0.1;x2-=0.1;break;case'D':case'd'://矩形对角坐标变量修改使得矩形右移x1+=0.1;x2+=0.1;break;}//参数修改后调用重画函数,屏幕图形将发生改变glutPostRedispla