计算机图形学试验指导一–OpenGL基础
- 格式:doc
- 大小:40.00 KB
- 文档页数:3
计算机图形学基础实验报告实验1 OpenGL初识一、实验目的熟悉编程环境;了解光栅图形学显示器的特点,了解计算机绘图的特点;利用VC++OpenGL作为开发平台设计程序,已能够在屏幕上生成任意一个像素点作为本实验的目标。
二、实验内容(1)了解和使用VC的开发环境,理解简单的OpenGL程序结构(2)掌握OpenGL提供的基本图形函数,尤其是生成点函数。
三、实验原理(1)基本语法常用的程序设计语言,如C、C++、Pascal、Fortran和Java 等,都支持OpenGL 的开发。
这里只讨论C版本下OpenGL的语法。
OpenGL基本函数均使用g1作为函数名的前缀,如glClearColor();实用函数则使用glu 作为函数名的前缀, 如gluSphere()。
OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。
一些函数如glColor*().(定义颜色值), 函数名后可以接不同的后缀以支持不同的数据类型和格式。
如glColor3(…)、glColor3d(…)、glColor3f(…)和glCo1or3bv(…)等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数, b、d、f 分别表示参数的类型是字节型、双精度浮点型和单精度浮点型, v 则表示这些参数是以向量形式出现的。
为便于移植, OpenGL定义了一些自己的数据类型,如GLf1oat、GLvoid,它们其实就是C语言中的float和void。
在gl.h文件中可以看到以下定义:…typedef float GLfloat;typedef void GLvoid;…一些基本的数据类型都有类似的定义项。
(2)程序的基本结构OpenGL程序的基本结构可分为三个部分:第一部分是初始化部分。
主要是设置一些OpenGL的状态开关,如颜色模式(RGBA 或Alpha)的选择、.是否作光照处理(若有的话,还需设置光源的特性)、深度检测、.裁剪等。
目录实验一:OpenGL基础知识 (1)实验二Ope nGL 中的建模与变换 (2)实验三OpenGL中的光照 (5)实验四OpenGL 中的拾取 (8)实验五OpenGL 中的纹理映射 (11)实验一:OpenGL 基础知识一、实验目的1、建立Windows系统下的OpenGL实验框架。
2、学习理解OpenGL工作流程。
二、实验环境1. 硬件:每个学生需配备计算机一台。
2. 软件:Visual C++ ;三、实验内容1、建立非控制台的Windows程序框架。
2、建立OpenGL框架。
3、建立OpenGL框架的类文件。
4、完善Windows框架。
5、理解程序间的相互关系。
四、实验要求1、学习教材第2章的内容。
2、理解教材中相关实例的代码,按要求添加到适当的地方,调试并通过运行。
3、运行结果应该与教材中的相关实例相符。
4、编译第2章的框架代码,修改背景色、窗口标题。
五、程序设计提示(略)六、报告要求1 •认真书写实验报告,字迹清晰,格式规范。
报告中应写清姓名、学号、实验日期、实验题目、实验目的、实验原理。
2 •报告中应书写主要源程序,且源程序中要有注释。
3 •报告中应包含运行结果及结果分析。
如调试通过并得到预期的效果,请注明通过'并粘贴运行效果图;如未调试通过或结果不正确,试分析原因。
4 •报告最后包含实验总结和体会。
实验二OpenGL 中的建模与变换一、实验目的1 .学习配置OpenGL环境。
2 .掌握在OpenGL中指定几何模型的方法。
3. 掌握OpenGL中的透视投影和正投影的设置方法,学会诊断投影问题导致的显示异常。
二、实验环境1. 硬件:每个学生需配备计算机一台2. 软件:Visual C++ ;三、实验内容1 .建立OpenGL编程环境(注:Windows自带gl和glu,还需要安装glut库文件。
)(a)查看Windows 自带的OpenGL 文件。
在文件夹c:\windows\system32下查看是否存在文件opengl32.dll 和glu32.dll ;在Visual Studio的安装目录Vc7\PlatformSDK\lnclude'gl 下查看是否存在gl.h 和glu.h ;在Vc7\PlatformSDK\Lib 下是否存在opengl32.lib 和glu32.lib 。
计算机图形学实验报告计算机图形学实验 (一) – OpenGL 基础用OPENGL画直线\圆\曲线等二维图1.1 综述这次试验的目的主要是使大家初步熟悉OpenGL 这一图形系统的用法,编程平台是Visual C++,它对OpenGL 提供了完备的支持。
OpenGL 提供了一系列的辅助函数,用于简化Windows 操作系统的窗口操作,使我们能把注意力集中到图形编程上,这次试验的程序就采用这些辅助函数。
本次实验不涉及面向对象编程,不涉及MFC。
1.2 在 VC 中新建项目1.2.1 新建一个项目选择菜单File 中的New 选项,弹出一个分页的对话框,选中页Projects 中的Win32Console Application 项,然后填入你自己的Project name,如Test,回车即可。
VC 为你创建一个工作区(WorkSpace ),你的项目Test 就放在这个工作区里。
1.2.2 为项目添加文件为了使用OpenGL,我们需要在项目中加入三个相关的Lib 文件:glu32.lib、glaux.lib、opengl32.lib,这三个文件位于c:\programfiles\microsoft visualstudio\vc98\lib 目录中。
选中菜单Project->Add To Project->Files 项(或用鼠标右键),把这三个文件加入项目,在FileView 中会有显示。
这三个文件请务必加入,否则编译时会出错。
或者将这三个文件名添加到Project->Setting->Link->Object/library Modules 即可。
点击工具条中New Text File 按钮,新建一个文本文件,存盘为Test.c 作为你的源程序文件,再把它加入到项目中,然后就可以开始编程了。
1.3 一个 OpenGL 的例子及说明1.3.1 源程序请将下面的程序写入源文件Test.c,这个程序很简单,只是在屏幕上画两根线。
学生实验实习报告册学年学期:2016-2017学年 春□√秋学期课程名称:大学计算机基础学生学院:通信与信息工程学院专业班级:学生学号:学生姓名:联系电话:重庆邮电大学教务处印制实验实习名OpenGL基本使用指导教师秦红星考核成绩课程名称计算机图形学A 课程编号实验实习地点信息科技大厦S306 完成日期学生姓名学生学号学院专业广电与数字媒体类所在班级教师评语教师签名:年月日一、实验实习目的及要求目的:认识了解OpenGL的性质、功能要求:1.利用OpenGL绘制一个简单的场景:比如球体、正方体2.加入灯光3.实现交互操作:平移、缩放、旋转二、实验实习设备(环境)及要求(软硬件条件)采用Microsoft Visual C 2010生成环境并用C++编写程序三、实验实习内容与步骤内容:背景为黑色,在点光源下,能够实现平移、缩放、旋转的球。
步骤:建立立体-->添加光照-->添加变换1.先写“主函数”,在主函数中将窗口生成好。
2.在“自定义函数1”中对窗口进行清除、填色等操作。
3.在“自定义函数1”中设置点光源,设置光照的各种参数。
4.在“自定义函数1”中设置平移、缩放、旋转及各参数。
5.在“自定义函数2”中设置平移和缩放的循环。
6.在主函数中调用这两个自定义函数,并且在主函数里面用“自定义函数1”为参数调用glutDisplayFunc()来注册一个绘图函数。
其次用空闲回调函数glutIdleFunc()来使球体不停地循环有缩放、平移功能的函数。
实现动画。
四、实验实习过程或算法(源程序、代码)#include<GL/glut.h>GLfloat angle = 0.0f;GLfloat multiply = 0.0f;void display(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置窗口里面的背景颜色glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(90.0f, 1.0f, 1.0f, 20.0f);glLoadIdentity();gluLookAt(0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);{//设置一个点光源GLfloat light_position[] = { 0.5f,0.0f,0.0f,1.0f };//(xyzw)w为1时代表点光源,0时代表方向光源GLfloat light_ambient[] = { 0.5f,0.5f,0.5f,1.0f };//(0001)GLfloat light_diffuse[] = { 1.0f,1.0f,1.0f,1.0f };//(1111)GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };//(1111)glLightfv(GL_LIGHT0, GL_POSITION, light_position);glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);//光源环境光强值glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);//光源漫反射强值glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);//光源镜面反射强值glEnable(GL_LIGHT0);//打开该光源glEnable(GL_LIGHTING);//打开光照}{glRotatef(angle, 0.0f, 1.0f, 0.0f);glTranslatef(0.0f, 0.0f, 0.6f); //平移glScaled(multiply, multiply, multiply); //缩放glutSolidSphere(0.2, 50, 50);}glutSwapBuffers();}void rotateAndzoom(void) //旋转和缩放{angle += 1.0f;if (angle >= 360.0f)angle = 0.0f;display();//设置旋转multiply += 0.01f;if (multiply >= 2.0f)// multiply -= 0.01f;//if (multiply <= 1.0f)multiply = 1.0f;display();//设置缩放}int main(int argc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);glutInitWindowPosition(400, 50);glutInitWindowSize(800, 800);glutCreateWindow("立体");glutDisplayFunc(&display);glutIdleFunc(&rotateAndzoom);//旋转glutMainLoop();//调用该函数启动程序,所有以创建的窗口将会显示return 0;}五、实验实习结果分析和(或)源程序调试过程实验实习名直线扫面和区域填充实现指导教师考核成绩课程名称课程编号实验实习地点完成日期学生姓名学生学号学院专业通信与信息工程学院广电与数字媒体类所在班级教师评语教师签名:年月日一、实验实习目的及要求项目目的:熟悉光栅图形学中的相关算法项目要求:1.应用OpenGL点绘制函数直线与区域2.采用直线扫面算法绘制一条线段,直线有离散点组成3.利用区域填充算法绘制多边形区域,区域由离散点组成二、实验实习设备(环境)及要求(软硬件条件)采用Microsoft Visual C 2010生成环境并用C++编写程序三、实验实习内容与步骤内容:1.用DDA算法实现点绘制直线。
计算机图形学实验指导书课程名称: 计算机图形学基础英文名称: Computer Graphics 课程性质: 限选编写人: 孔繁茹2010年9月1日计算机学院阅读说明● 未加标注的为参考实验 ● 标有☆的为必做实验 ● 标有★的为选做实验实验要求● 每个小组 ≤ 4人,需要完成以下任务⏹ 所有必做实验 (40%) 8 * 5分 ⏹ 2项选做实验 (20%) 2 * 10分 ⏹ 1项综合实验 (40%) 1 * 40分Part 1 预备知识实验1.1 环境设置[参考程序] demo.c 图 1.1.1 一、实验目的熟悉VC 编程环境, 配置OpenGL 图形环境 二、实验内容1.OpenGL 环境设置将OpenGL 所需函数库和头文件复制到指定目录.也可以通过批处理文件的方式, 将下面四行存入一文本文件, 改名为set.bat , 然后双击set.bat 运行. copy glut.h "C:\Program Files\Microsoft Visual Studio\VC98\Include\GL" copy glut32.lib "C:\Program Files\Microsoft Visual Studio\VC98\Lib" copy glut32.dll "C:\WINDOWS\system32" pause注意: 如果VC 安装在D 盘或其他盘, 应修改相应路径 2.编译运行demo.c, 查看环境是否配置成功Part 2 OpenGL 编程基础图 1.1.1实验2.1 OpenGL 编程基础[参考程序]hello.c 图2.1.1 chap2-1.cpp 图2.1.2一、实验目的熟悉OpenGL 编程框架、基本函数、几何原语 二、实验内容1. 运行hello.c, 查看运行结果, 并完成以下练习1) 改变背景颜色 2) 改变图形颜色 3) 改变窗口大小 4) 改变窗口位置2. 用OpenGL 几何原语绘制点, 直线, 多边形, 三角形带等基本图形. OpenGL 编程基础可参考附录。
OpenGL编程初步OpenGL介绍●由SGI公司的GL发展而来的一个工业标准图形库。
●OpenGL由图形库GL(Graphics Library)和应用图形库GLU(Graphics Library Utilities)两个库组成。
●OpenGL是与平台无关的标准图形库,可在多种平台上运行。
确切地说是与窗口系统无关。
●OpenGL可在网络上运行,显示图形的计算机可以不是运行图形程序的计算机。
●但OpenGL没有事件处理(如鼠标,键盘输入等)和窗口管理(如大小,位置等)的功能。
●另一个辅助库GLUT提供了与平台无关的事件处理和窗口管理功能。
●实现事件处理和窗口管理等功能的另一个方法是使用OpenGL在特定窗口系统的扩展,如OpenGL的X扩展GLX,在Windows的扩展WGL。
OpenGL的发展●1992年7月,OpenGL 1.0;●1995年12月,OpenGL 1.1;●1998年3月,OpenGL 1.2;●1998年10月,OpenGL 1.2.1;●2001年8月,OpenGL 1.3;●2002年7月,OpenGL 1.4.●OpenGL由独立组织ARB(OpenGL ArchitectureReview Board)管理。
成立于1992年。
主要成员有IBM,SGI,Intel, Microsoft,Compaq等。
●另一独立组织OPC(OpenGL PerformanceCharacterization Committee)负责管理和发布OpenGL的性能测试基准(benchmark)。
OpenGL与Windows平台●Microsoft和SGI共同开发了OpenGL的WIN32版本,称为WGL。
最先OpenGL集成在Windows NT中,后来集成到了Windows95(OSR2)中。
Windows98已将OpenGL作为标准组成部分。
●运行OpenGL程序,需要在windows\system目录下有动态连接库opengl32.dll,glu32.dll,使用GLUT的用戶需要有glut32.dll。
《计算机图形学基础》实验4 OpenGL中基本图形的绘制一、实验目的及要求1.掌握OpenGL中点的绘制方法。
2.掌握OpenGL中直线的绘制方法。
3.掌握OpenGL中多边形面的绘制方法。
4. 掌握OpenGL中字符函数的绘制方法。
二、实验环境主要是软件开发环境vc 6.0三、实验内容OpenGL实现直线段的反走样。
四、实验结果五、程序代码#include <gl/glut.h>GLuint lineList; //指定显示列表IDvoid Initial(){glClearColor(1.0f, 1.0f, 1.0f, 0.0f);glLineWidth(12.0f);glColor4f (0.0, 0.6, 1.0, 1.0);lineList = glGenLists(1);glNewList(lineList, GL_COMPILE); //定义显示列表glBegin(GL_LINE_LOOP);glVertex2f(1.0f, 1.0f);glVertex2f(4.0f, 2.0f);glVertex2f(2.0f, 5.0f);glEnd();glEndList();}void ChangeSize(GLsizei w, GLsizei h){if(h == 0) h = 1;glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w<=h)gluOrtho2D(0.0, 5.0, 0.0, 6.0*(GLfloat)h/(GLfloat)w);elsegluOrtho2D(0.0, 5.0*(GLfloat)w/(GLfloat)h, 0.0, 6.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void Displayt(void){glClear(GL_COLOR_BUFFER_BIT);glCallList(lineList);glFlush();}void Displayw(void){glClear(GL_COLOR_BUFFER_BIT);glEnable(GL_LINE_SMOOTH); //使用反走样glEnable (GL_BLEND); //启用混合函数glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //指定混合函数glCallList(lineList);glFlush();}void main(void){glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(300, 300);glutCreateWindow("原始图形");glutDisplayFunc(Displayt);glutReshapeFunc(ChangeSize);Initial();glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(300, 300);glutInitWindowSize(300, 300);glutCreateWindow("反走样图形");glutDisplayFunc(Displayw);glutReshapeFunc(ChangeSize);Initial();glutMainLoop();}六、心得体会在光栅图形显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状或台阶状外观。
实验一OpenGL基本图形绘制一、实验目的和要求:1. 了解VC++环境下,OpenGL图形绘制的程序结构;2. 通过编程实现简单二维图形的绘制;3. 掌握理解简单的OpenGL程序结构;掌握OpenGL提供的基本图形函数,尤其是生成点、线、面的函数4. 掌握图形显示原理。
二、实验内容:1、OpenGL在VC++下的安装和配置2、读懂给定的示例程序,使用Visual C++ 6.0和OpenGL编写几个简单图形的绘制程序。
3、建议有能力的学生进一步学习OpenGL的复杂功能创建效果更好的三维图形;三、实验步骤:1、初步了解OpenGL的功能以及语法特点;2、下载glut包,复制 glut32.dll到winnt/system32文件夹下,复制glut32.lib到vc98/lib文件夹下,复制glut.h到vc98/include/gl文件夹下;3、创建VC工程:选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。
VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里;4、为项目添加文件:为了使用OpenGL,我们需要在项目中加入三个相关的Lib文件:glu32.lib、glut32.lib、opengl32.lib,这三个文件位于VC安装目录下的lib目录(如c:\program files\ devstudio\vc\lib)中。
选中菜单Project->Add ToProject->Files项(或用鼠标右键),把这三个文件加入项目,在FileView中会有显示。
这三个文件请务必加入,否则编译时会出错。
或者将这三个文件名添加到Project->Setting->Link-> Object /library Modules 即可。
北师大珠海分校信息技术学院
计算机图形学实验报告
实验报告文件命名方式:学号姓名_实验序号_实验名称.doc
修改不同视点,目标点不变,观看显示效果
视点设置函数
3. 修改目标点,视点不动,观看显示效果gluLookAt(0,0,5,0,3,0,0,1,0); //视点设置函数gluLookAt(0,0,5,3,0,0,0,1,0); //视点设置函数
4. 视点与目标点同时修改,观看显示效果
gluLookAt(5,0,0,3,0,0,0,1,0); //视点设置函数
视点与目标点不变,修改观察体大小,观看显示效果
定义透视投影投影观察体大小
6. 将正交投影观察体改为透视投影观察体,并设置其大小,观察显示效果以上都是透视投影观察体,改为正交观察体后如图
比透视投影观察体的亮度暗些,经纬线少一些。
实验课完成程度与表现自我评价:
这次实验课相对不是很难,因为是刚刚开始学3D,觉得
学习3D的一些函数,比如视点设置函数,透视投影观察函数,正交观察函数,画多面体,虽然会。
计算机图形学基础OpenGL1. 使用OpenGL在屏幕上画一条直线,其中端点的坐标分别是(2,3)和(6,9)。
答案:glBegin(GL_LINES);glVertex2f(2,3);glVertex2f(6,9);glEnd(;2. 如何使用OpenGL把一个三角形绘制在屏幕上,其三个顶点的坐标分别是(1,3)、(6,7)和(9,6)?答案:glBegin(GL_TRIANGLES);glVertex2f(1,3);glVertex2f(6,7);glVertex2f(9,6);glEnd(;3. 如何使用OpenGL在屏幕上绘制一个正方形,正方形的中心点坐标为(4,6),边长为5?答案:glBegin(GL_QUADS);glVertex2f(4-2.5, 6+2.5);glVertex2f(4+2.5, 6+2.5);glVertex2f(4+2.5, 6-2.5);glVertex2f(4-2.5, 6-2.5);glEnd(;4. 如何使用OpenGL在屏幕上绘制一个圆,圆心坐标为(7,3),半径为4?答案:glBegin(GL_POLYGON);int i;for(i=0;i<360;i++)glVertex2f(7+4*cos(i*PI/180.0f),3+4*sin(i*PI/180.0f));}glEnd(;5. 如何使用OpenGL在屏幕上绘制一个贝塞尔曲线,其中(1,2)、(3,4)、(5,6)、(7,7)是控制点?答案:GLfloat points[4][2] = {{1,2}, {3,4}, {5,6}, {7,7}};glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &points[0][0]);glEnable(GL_MAP1_VERTEX_3);glBegin(GL_LINE_STRIP);int i;for (i=0;i<=30;i++)glEvalCoord1f((GLfloat) i/30.0f);glEnd(;6. 如何使用OpenGL实现2D矢量图形的缩放操作,指定缩放中心点为(-2,4),缩放比例为1.3?答案:glTranslatef(-2,4,0);。
实验一OpenGL基本图形绘制一、实验目的和要求:1. 了解VC++环境下,OpenGL图形绘制的程序结构;2. 通过编程实现简单二维图形的绘制;3. 掌握理解简单的OpenGL程序结构;掌握OpenGL提供的基本图形函数,尤其是生成点、线、面的函数4. 掌握图形显示原理。
二、实验内容:1、OpenGL在VC++下的安装和配置2、读懂给定的示例程序,使用Visual C++ 6.0和OpenGL编写几个简单图形的绘制程序。
3、建议有能力的学生进一步学习OpenGL的复杂功能创建效果更好的三维图形;三、实验步骤:1、初步了解OpenGL的功能以及语法特点;2、下载glut包,复制 glut32.dll到winnt/system32文件夹下,复制glut32.lib到vc98/lib文件夹下,复制glut.h到vc98/include/gl文件夹下;3、创建VC工程:选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。
VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里;4、为项目添加文件:为了使用OpenGL,我们需要在项目中加入三个相关的Lib文件:glu32.lib、glut32.lib、opengl32.lib,这三个文件位于VC安装目录下的lib目录(如c:\program files\ devstudio\vc\lib)中。
选中菜单Project->Add ToProject->Files项(或用鼠标右键),把这三个文件加入项目,在FileView中会有显示。
这三个文件请务必加入,否则编译时会出错。
或者将这三个文件名添加到Project->Setting->Link-> Object /library Modules 即可。