您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 实验1 OpenGL图形编程入门
实验一OpenGL图形编程入门一、实验目的1、了解和掌握OpenGL的安装;2、掌握一个简单的基于OpenGL的C++程序结构;3.掌握win32程序框架;4、掌握OpenGL中若干基本图形的绘制。二、实验环境硬件要求:PC机,主流配置,最好为独立显卡,显存512M以上。软件环境:操作系统:Windows7/Windows8语言开发工具:MicrosoftVisualstudio2010,VisualC++。程序框架:win32应用程序三、实验内容与要求要求:实验所有步骤所生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。WORD文档命名方式:学号姓名-实验序号-实验名称。内容:1、准备好OpenGL库文件Glut32.dll路径%systemroot%\SysWOW64Glut32.libinPATH\libGlut.hinPATH\Includesystemroot为windows7或windows8安装路径path为Visualstudio2010的安装路径2、建立一个工程文件,并运行样本程序my_first_program.cpp,观看结果。(1)启动MicrosoftVisualstudio2010,在菜单栏中点击“文件”选项,选择“新建”“项目”。如图1-1.图1-1新建项目(2)在新建项目的窗口中选择“VisualC++的Win32项目”,然后输入项目名称(例如lab1_basis),选择项目的保存位置(或者使用默认保存路径),单击“确定”。如图1-2所示。图1-2Win32项目(3)将工程文件中SourcesFiles中的C++源文件(lab1_basis.cpp)替换成以下样本程序:图1-3替换成样本程序//样本程序My_first_program.cpp#includestdafx.h#includeglut.hvoiddisplay(void){glClearColor(0.0f,0.0f,0.0f,1.0f);//设置清屏颜色glClear(GL_COLOR_BUFFER_BIT);//刷新颜色缓冲区;glFlush();//用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;}intAPIENTRY_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);char*argv[]={hello,};intargc=2;//must/shouldmatchthenumberofstringsinargvglutInit(&argc,argv);//初始化GLUT库;glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//设置显示模式;(缓冲,颜色类型)glutInitWindowSize(500,500);//绘图窗口大小glutInitWindowPosition(1024/2-250,768/2-250);//窗口左上角在屏幕的位置glutCreateWindow(hello);//创建窗口,标题为“hello”;glutDisplayFunc(display);//用于绘制当前窗口;glutMainLoop();//表示开始运行程序,用于程序的结尾;return0;}运行结果:创建一个名称是“hello”的窗口。如图1-4所示。图1-4Hello窗口2、认真阅读以上样本程序,理解每个函数的作用,并修改窗口标题,显示为“我的第一个OpenGL程序”。运行结果:如图1-5所示。图1-5我的第一个OpenGL程序3、窗口的设置。在默认情况下,窗口的位置出现在屏幕的左上角,默认大小为300*300。要求:(1)修改窗口位置,使之处于屏幕正中央;(2)将窗口大小改为整个屏幕大小;(3)修改窗口大小为其他尺寸。参考函数:glutInitWindowPosition(intx,inty);//为窗口指定初始位置,窗口左上角在屏幕上的位置为(x,y)//如果不写该函数,或者glutInitWindowPosition(0,0);均表示窗口的位置出现在屏幕的左上角glutInitWindowSize(intwidth,intheight);//设置窗口大小//如果不写该函数,表示窗口的大小为默认大小300*3004、背景色的设置。在默认情况下背景色是黑色。要求:(1)将窗口背景设置为白色,如图1-6所示。(2)将窗口背景设置为其他颜色,如图1-7所示。参考函数:glClearColor(r,g,b,alpha);//设置背景颜色,此函数放在display()中,并且放在glClear(GL_COLOR_BUFFER_BIT);语句的前面。其中r,g,b取值范围是[0,1],可以是浮点数,alpha取值范围为0~1,在这里其值不起作用,以后再讨论该参数。例如glClearColor(0,0,0,0)为黑色背景,glClearColor3f(1,1,1,0)为白色背景,其他颜色应该如何设置?图1-6白背景图1-7红背景5、基本图形绘制。绘制函数一般放置在清屏语句glClear(GL_COLOR_BUFFER_BIT);//刷新颜色缓冲区;和刷新语句之间glFlush();//用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行;例如矩形绘制(1)在display绘图函数的glClear(GL_COLOR_BUFFER_BIT);语句后面增加glRectf(0,0,1,1);运行程序查看效果,如图1-8所示。图1-8矩形绘制图1-9矩形坐标改变(2)修改矩形的对角坐标,看看什么变化和问题。如图1-9所示。(3)根据给出的函数,试画出直线和三角形等基本图形。例如,绘制直线glBegin(GL_LINES);glVertex2f(0,0);glVertex2f(0.8,0.8);glEnd();//画三角,x1,y1,x2,y2和x3,y3为三角形顶点坐标glBegin(GL_TRIANGLES);glVertex2f(0,0);glVertex2f(0.5,0.5);glVertex2f(0.0,0.8);glEnd();图形分别如图1-10和图1-11所示。图1-10直线绘制图1-11三角形绘制6、绘图色的设置。(1)将绘制的图形修改成红色。如图1-12所示。(2)将绘制的不同基本图元设为不同的颜色。如图1-13所示。参考函数:glColor3f(r,g,b);//设置绘图色r,g,b,取值范围:[0,1],可以为浮点数。例如glColor3f(1,0,0);//为绘图红色glColor3f(0,1,0);//为绘图绿色glColor3f(0,0,1);//为绘图蓝色其它绘图颜色应如何设置?图1-12红色矩形图1-13三角形绘制7、绘制几何图形1)更改标题栏,加上学号姓名2)绘制基本2个以上几何形状:矩形、三角形。。。3)要求三种颜色四、问答与思考题1、默认的窗口位置在屏幕的什么位置?如果要改变窗口在屏幕的位置应该如何处理?如何改变窗口的大小?2.在本次实验中默认的绘图坐标原点在窗口中的什么位置?3.如何修改背景颜色和绘图颜色?绘制颜色的顺序与位置有什么要求?4、#includeglut.h在此句中,头文件glut.h放在哪个文件夹下了?5、图形函数的顺序与位置有什么要求?试改变程序中一些图形函数的顺序看运行结果是否有变化。五、函数参考1。glutInitWindowPosition(intx,inty);//为即将创建的窗口指定初始位置,窗口左上角在屏幕上的位置为(x,y)2.glutInitWindowSize(intwidth,intheight);//设置窗口大小3。glClearColor(r,g,b,alpha);//设置清屏颜色4。.glColor3f(r,g,b);//设置绘图色r,g,b,alpha取值范围:0~1之间,可以为浮点数基本图元绘制函数参考5。glRectf(x1,y1,x2,y2),画矩形,x1,y1和x2,y2分别为矩形对角线顶点坐标6。glBegin(GL_LINES);//画线命令,x1,y1和x2,y2分别为直线段端点坐标glVertex2f(x1,y1);glVertex2f(x2,y2);glEnd();7。glBegin(GL_TRIANGLES);//画三角形命令,x1,y1,x2,y2和x3,y3分别为三角形顶点坐标glVertex2f(x1,y1);glVertex2f(x2,y2);glVertex2f(x3,y3);glEnd();六、实验演示录像1)win32程序演示:lab1-win32project.exe
本文标题:实验1 OpenGL图形编程入门
链接地址:https://www.777doc.com/doc-6169505 .html