(精品)OpenGL 入门

上传人:痛*** 文档编号:247322840 上传时间:2024-10-17 格式:PPT 页数:69 大小:187.50KB
返回 下载 相关 举报
(精品)OpenGL 入门_第1页
第1页 / 共69页
(精品)OpenGL 入门_第2页
第2页 / 共69页
(精品)OpenGL 入门_第3页
第3页 / 共69页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,8.1,简介,8.2,OpenGL,基本程序结构,8.3,OpenGL,程序设计入门,第八讲,VC,与,OpenGL,编程,8.1,简介,8.1.1,什么是,OpenGL,?,OpenGL,是一个功能强大的,开放,图形库,(,Open Graphics Library,),。,其,前身是,SGI,公司为其图形工作站开发的,IRIS GL,。,为使其能够更加容易地移植到不同的硬件和操作系统,,SGI,开发了,OpenGL,。,目前,,OpenGL,已,成为开放的国际图形标准。,8.1.2 OpenGL,的特点,从程序开发人员的角度来看,,OpenGL,是一组绘图命令的,API,集合。利用这些,API,能够方便地描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓冲区中。,OpenGL,的,API,集提供了物体描述、平移、旋转、缩放、光照、纹理、材质、像素、位图、文字、交互以及提高显示性能等方面的功能,基本涵盖了开发二、三维图形程序所需的各个方面。与一般的图形开发工具相比,,OpenGL,具有以下几个突出特点,:,(,1,)跨平台特性,OpenGL,与硬件、窗口和操作系统是相互独立的。为了构成一个完整功能的图形处理系统,其设计实现共分,5,层:图形硬件、操作系统、窗口系统、,OpenGL,和,应用软件。,因而,,OpenGL,可以集成到各种标准窗口和操作系统中。例如,操作系统包括,UNIX,Windows NT,Windows 95/98,DOS,等;窗口系统包括,X Windows,Microsoft Windows,等。,(,2,),应用的广泛性,OpenGL,是目前最主要的二、三维交互式图形应用程序开发环境,已成为业界最受推荐的图形应用编程接口。自从,1992,年发表以来,,OpenGL,已被广泛地应用于,CAD/CAM,、,三维动画、数字图像处理以及虚拟现实等领域,,Kinetix,公司的,3D Studio Max,就是突出的代表。无论是在,PC,机上,还是在工作站甚至是大型机和超级计算机上,,OpenGL,都能表现出它的高性能和强大威力。,(,3,),网络透明性,建立在客户,/,服务器模型上的网络透明性是,OpenGL,的固有特性,它允许一个运行在工作站上的进程在本机或通过网络在远程工作站上显示图形。利用这种性质能够均衡各工作站的工作负荷,共同承担图形应用任务。,(,4,),高质量和高性能,无论是在,CAD/CAM,、,三维动画还是可视化仿真等领域,,OpenGL,高质量和高效率的图形生成能力都能得到充分的体现。在这些领域中,开发人员可以利用,OpenGL,制作出效果逼真的二、三维图像来。,(,5,),出色的编程特性,OpenGL,在各种平台上已有多年的应用实践,加上严格的规范控制,因此,OpenGL,具有良好的稳定性。,OpenGL,具有充分的独立性与易使用性等。,8.2 OpenGL,基本程序结构,Windows 95/98,以及,Windows NT 3.51,以上的操作系统中提供了,OpenGL,的动态库,在,VC+2.0,以上的版本中提供了,OpenGL,的静态库,所以,使用,OpenGL,编程,在微机上使用时,最好是在上述软件环境中编写,OpenGL,程序。,在微机版本中,,OpenGL,提供了三个函数库,它们是基本库、实用库和辅助库。,8.2.1 Windows,系统下的,OpenGL,函数,OpenGL,的基本库是,OpenGL,的核心函数库,在这个函数库中,提供了,115,个函数,这些函数都是以“,gl,”,为前缀。,这类,API,的主要功能包括物体描述、平移、旋转、缩放、光照、纹理、材质、像素、位图、文字处理等。,所有,OpenGL,提供的操作都可以使用这些函数来实现,而且,对于不同的软件和硬件平台,这些函数的使用是完全相同的,这个特性注定了,OpenGL,程序完美的可移植性。,OpenGL,的实用库是,OpenGL,基本库的一套子程序,它提供了,43,个函数,这些函数都是以”,glu,”,为前缀。基本的,OpenGL,不支持传统上同图形标准相关的一些几何对象,为了减少一些编程负担,,OpenGL,提供了实用库。,主要功能包括绘制二次曲面、,NURBS,曲线曲面、复杂多边形以及纹理、矩阵管理等。,实用库中的所有函数全都是由,OpenGL,基本库函数来编写的,所以,在使用上和,OpenGL,基本库的使用是完全相同的,而且,用户也可以使用基本函数库来实现实用库的函数功能。,OpenGL,的辅助库是为了方便用户用标准,C,编写,OpenGL,程序而编写的。,OpenGL,是一个图形标准,所以,在,OpenGL,中没有提供窗口管理和消息事件响应的函数,这样使用标准,C,编写,OpenGL,程序是很不方便的,所以提供了辅助库。,它提供了,31,个函数,这些函数都是以“,aux”,为前缀。,OpenGL,辅助库提供了一些基本的窗口管理函数、事件处理函数和一些简单模型的制作函数等,例如,定义窗口的大小、处理键盘时间、鼠标击键事件、绘制多面体等等。,8.2.2,一个简单的,OpenGL,程序,下面将通过一个简单的,OpenGL,程序来说明,OpenGL,头文件的使用、语法规则、程序的基本结构、程序的运行环境配置。,例,8.1 OpenGL,例程,sample.c,#include,#include,#include,#include,#include,void,myinit(void,);,void CALLBACK,myReshape(int,w,int,h);,void CALLBACK display(void);,void,myinit(void,)/,初始化,glClearColor(0.0,0.0,0.0,0.0);/,将窗口清为黑色,void CALLBACK display(void),glClear(GL_COLOR_BUFFER_BIT,);,/,将颜色缓存清为,glClearColor,命令所设置的颜色,即背景色,glColor4f(0.2,0.8,1.0,1.0);/,选颜色,(R,G,B),glRotatef(30,1.0,1.0,0.0);/,做旋转变换,auxWireCube(1.0);/,绘制六面体的虚线图,glFlush,();/,强制绘图,不驻留缓存,void CALLBACK,myReshape,(,int,w,int,h)/,用于窗口大小改变时的处理,与绘图无关,glViewport(0,0,w,h);,void main(void),auxInitDisplayMode(AUX_SINGLE|AUX_RGBA,);/,窗口显示单缓存和,RGB(,彩色,),模式,auxInitPosition(0,0,200,200);/,大小,x=200 y=200 (0,0),是屏幕左上点,auxInitWindow(“openglsample.c,”);/,初始化窗口,参数是标题,myinit,();,auxReshapeFunc(myReshape,);,auxMainLoop(display,);,1.,头文件使用,若,应用程序使用,OpenGL,核心函数,应包括头文件,;,使用,GLU,库函数,应包括头文件,;,使用,AUX,库函数,应包括头文件,;,使用,WGL,和,Win32,应包括头文件,。,2.,回调(,CALLBACK,),函数,CALLBACK,函数是一些用来让系统调用的函数,系统调用它们来实现显示、接受输入事件功能。,3.,语法规则,OpenGL,基本库的所有操作函数都是以“,gl,”,为前缀的。实用库的所有操作函数都是以“,glu,”,为前缀。辅助库的所有操作函数都是以“,aux”,为前缀的。,OpenGL,命令带有后缀。,以,sample.c,中的,glColor4f,为例,前缀“,gl,”,指这个函数是,OpenGL,的核心库函数,组成命令的单词首字母大写,如“,Color”,;,后缀“,4”,表示颜色值是由,4,个变量来表示的;“,f”,表示所表示颜色的每个分量的类型为,32,位浮点数。,OpenGL,核心库函数常量是以“,GL_,”,开头,均用大写字母,并用下划线将每个关键词分开,如,GL_COLOR_BUFFER_BIT,。,4.,程序的基本结构,一个,OpenGL,程序的基本结构是很简单的,无论多么复杂的,OpenGL,程序,可以大致分解成以下部分:,(,1,)定义窗口,Windows,系统下的,OpenGL,实现提供了一个辅助函数库,aux,,,用于解决开窗口和处理输入事件等问题。,窗口管理函数:,首先,调用,void,auxInitDisplayMode(Glbitfield,mask),函数定义窗口的特性,如颜色和缓存区的性质。例如:,auxInitDisplayMode(AUX_SINGLE|AUX_RGBA,);,/,窗口显示单缓存和,RGB(,彩色,),模式,其次,调用,void,auxInitPosition(Glint,x,Glint y,Glint width,Glint height),定义窗口在屏幕上的位置和大小。其中,,x,y,为窗口左上角的坐标,,width,height,分别为窗口的宽和高,(,像素个数,),。默认值为,(0,0,80,80),。例如:,auxInitPosition(0,0,200,200);,/,大小,x=200 y=200 (0,0),是屏幕左上点,最后,完成上述两个函数调用后,用函数,void,auxInitWindow(Glbyte,*,titleString,),打开窗口。窗口的标题为字符串,titleString,。,窗口,把,ESC,键与退出函数联系起来,可以用来关闭窗口,退出程序。例如:,auxInitWindow(“openglsample.c,”);,/,初始化窗口,参数是标题,处理输入事件,:,当改变窗口尺寸、移动窗口、重新显示窗口时,由,auxReshapeFunc(myReshape,),调用函数,myReshape,重新定义窗口属性。,通常,myReshape,函数调用,glViewPort,函数,对当前图形进行裁剪,重新定义投影矩阵等。,OpenGL,辅助函数库中还包括处理键盘和鼠标输入事件的函数。,(,2,)初始化操作,由于,OpenGL,的绘图方式是由一系列的状态确定的,因而在绘制图形前需要做一些准备工作,包括,清缓存区(,buffer,)、,定义光照模型、定义纹理映射等基本操作的初始化状态、设置三维视景体、定义视口。,例如:,glClearColor(0.0,0.0,0.0,0.0);/,将窗口清为黑色,glClear(GL_COLOR_BUFFER_BIT,);,/,将颜色缓存清为,glClearColor,命令所设置的颜色,即背景色,(,3,),设置观察坐标系下的取景模式和取景框位置及大小,主要利用了三个函数:,函数,void,glViewport(GLint,x,Glint y,Glsizei,width,Glsizei,height),:,设置在屏幕上的视口大小,四个参数描述屏幕视口四个角上的坐标(以像素表示)。,参数,(x,y),用于指定视口的左下角在窗口坐标系中的位置,参数,width,和,height,分别确定矩形视口的宽和高,均以像素为单位,。,注意:视口的大小和尺寸是在窗口坐标系中进行度量的,默认状态下其坐标原点位于窗口的左下角,其尺寸与窗口的大小相同。,视点方向,观察体积,函数,void,glOrtho(left,right,bottom,top,near,far,),:,设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体,。,函数,void,gluPerspective(fovy,aspect,zNear,zFar,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!