单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 图形标准,4.1,图形标准的分类,建立图形标准的目的是使图形与计算机硬件无关,实现程序的可移植和数据的可交换图形标准的分类:,应用程序接口,图形数据交换,图形设备接口,4.2,应用程序接口标准,1,),GKS,(,Graphics Kernel System,),1985,年,第一个国际计算机图形信息标准:计算机图形核心系统(,GKS,)正式颁布GKS,提供了在应用程序和图形输入输出设备之间的功能接口,定义了一个独立于语言的图形核心系统GKS,是一个二维图形标准,使用,GKS,编制出来的应用程序可方便地在具有,GKS,的不同图形系统之间移植以后又开发出了三维图形核心系统(,GKS-3D,)2,),PHIGS,(,Programmer,s Hierarchical Interactive Graphics System,),PHIGS,(,Programmers Hierarchical Interactive Graphics System,)是,ISO,于,1986,年公布的计算机图形系统标准。
PHIGS,是为具有高度动态性,交互性的三维图形应用而设计的图形软件工具库,其最主要的特点是能够在系统中高效率地描述应用模型,迅速修改图形模型的数据,并能绘制显示修改后的图形模型,它也是在程序与图形设备之间提供了一种功能接口4.3,图形数据交换标准,1,),CGM,(,Computer Graphic Metafile,),1980,年开始,美国国家标准委员会,ANSI,和国际标准化组织,ISO,专门成立了标准化组着手计算机图元文件(,CGM,)标准的制定,并于,1987,年正式成为,ISO,标准,,CGM,提供了一个在虚拟设备接口上存贮与传输图形数据及控制信息的机制它具有广泛的适用性,大部分的二维图形软件都能够通过,CGM,进行信息存贮和交换CGM,标准是由一套标准的与设备无关的定义图形的语法和词法元素组成Windows,的图元文件(不同于,CGM,),windows,图元文件是用来表示矢量图形的二进制记录它主要用来通过剪贴板在程序之间传递图形数据,也可以存储在硬盘上(*,.WMF,Windows Metafile,),它将一组图形命令形成一个矢量绘图文件:,hdcMeta=CreateMetaFile(NULL)/,这里是内存,hBrush=CreateSolidBrush(RGB(0,0,255);,Rectangle(hdcMeta,0,0,100,100);,MoveToEx(hdcMeta,0,0,NULL);,LineTo(hdcMeta,100,100);,MoveToEx(hdcMeta,0,100,NULL);,LineTo(hdcMeta,100,0);,SelectObject(hdcMeta,hBrush);,Ellipse(hdcMeta,20,20,80,80);,hmf=CloseMetaFile(hdcMeta);,以后可以使用,hmf,在指定矩形区域中绘图。
2,),IGES,(,Initial Graphics Exchange Specification,),随着,CAD/CAM,技术的广泛应用,企业间、企业内部不同的职能部门间经常需要进行产品信息的交换,由于,CAD/CAM,系统的不同,直接影响到设计和制造部门和企业间的产品信息的交换和流动导致了产品数据交换标准的制订1980,年,由美国国家标准局(,NBS:National Bureau of Standards,)主持成立了由波音公司和通用电气公司参加的技术委员会,制订了基本图形交换规范,IGES,,并于,1981,年正式成为美国的国家标准从,1981,年的,IGES 1.0,版本到现在的版本,,IGES,逐渐成熟,日益丰富,包括了,CSG,模型和实体的边界模型,覆盖了,CAD/CAM,数据交换的越来越多的应用领域作为较早颁布的标准,,IGES,被许多,CAD/CAM,系统接受,成为应用最广泛的数据交换标准3,),DXF,(Drawing Exchange Format),DXF,为,AutoCAD,系统的图形数据文件,,DXF,虽然不是标准,但由于,AutoCAD,系统的普遍应用,使得,DXF,成为事实上的数据交换标准。
DXF,是具有专门格式的,ASCII,码文本文件,它易于被其它程序处理,主要用于实现高级语言编写的程序与,AutoCAD,系统的连接,或其它,CAD,系统与,AutoCAD,系统交换图形文件4,),STEP,(,Standard for the Exchange of Product Model Data,),作为数据交换的国际标准,IGES,发表以后,成为应用最广泛的数据交换标准但在应用过程中,,IGES,缺点逐渐暴露出来,不能满足复杂的工业生产数据交换的要求1984,年,,IGES,组织设置了一个研究计划,称为,PDES,(,Product Data Exchange Specification,)PDES,计划的长期目标是为产品数据交换规范的建立开发一种方法论,并运用这套方法论开发一个新的产品数据交换标准,新标准要求能克服,IGES,中已经意识到的弱点,这些弱点包括文件过长,处理时间长,一些几何定义影响数值精度,交换的是数据而不是信息PDES,计划与,IGES,相比的一个显著特点是着重于产品模型信息的交换而不是象,IGES,那样仅传递一些几何和图形数据1983,年国际标准化组织,ISO,开始制定产品模型数据交换标准。
STEP,的制定主要基于,PDES,计划,,1988,年,ISO,把美国的,PDES,文本作为,STEP,标准的建议草案公布,随后,PDES,的制定工作并入,STEP,的制定中,,PDES,计划从,PDES,的制定转向,STEP,标准的应用,,PDES,也因此改名为,“,应用,STEP,进行产品数据交换(,Product Data Exchange using STEP,),”,由于,PDES,计划和,STEP,密切相关,习惯上常将两者合在一起为,PDES/STEP,STEP,是一个关于产品数据计算机可理解的表示和交换的国际标准,目的是提供一种不依赖于具体系统的中性机制,能够描述产品整个生命周期中的产品数据产品生命周期包括产品的设计、制造、使用、维护、报废等产品在各过程产生的信息既多又复杂,而且分散在不同的部门和地方这就要求这些产品信息以计算机能理解的形式表示,而且在不同的计算机系统之间进行交换时保持一致和完整产品数据的表达和交换,构成了,STEP,标准4.4,图形设备接口标准,CGI(Computer Graphics Interface):,CGI,是一个针对图形设备的,ISO,接口标准,是设备级的计算机图形标准。
CGI,的目标是使应用程序和图形库直接作用在各种不同的图形设备上,使其在各种图形设备上不经修改就可以运行即在用户程序和虚拟设备之间以一种独立于设备的方式提供图形信息的描述和通信CGI,规定了发送图形数据到设备的输出和控制功能,用图形设备接收图形数据的输入、查询和控制功能在二维图形设备中可以找到,CGI,支持的功能,但没有一个图形设备包含由,CGI,定义的所有功能4.5,实际工业标准,OpenGL,OpenGL,的前身是,SGI,公司为其图形工作站设计的一个图形开发软件库,IRIS GL(Graphics Library),,由于其性能优越,因此受到了用户的一致推崇SGI,公司有针对性地对,GL,进行了改进,特别是扩展了,GL,的可移植性,使之成为一个跨平台的开放式图形编程接口,这就是,OpenGL(Open Graphics Library),OpenGL,是目前实际上的,底层,图形应用程序接口标准,由,OpenGL ARB(Architecture Review Board,体系结构评审委员会,),管理,目前的最新版本是,4.1,,主流是,2.x,微软支持到,1.1,(注:并不影响在,windows,中使用高版本,例如可以使用,glew,扩展)。
OpenGL,是一个功能强大的图形库,用户可以很方便地利用它开发出高度真实和交互的三维图形从程序开发人员的角度来看,,OpenGL,是一组绘图命令的,API,集合利用这些,API,能够方便地描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓冲区中对,OpenGL,实现者来说,,OpenGL,是影响图形硬件操作的一组命令如果硬件只包含显存,,Open GL,的指令完全依赖主机的,CPU,来实现通常情况下,图形硬件有不同水平的图形加速能力,,OpenGL,实现者的任务是在,CPU,和图形硬件之间对图形命令进行合理的划分,以便充分利用图形硬件的处理能力1,),OpenGL,的,API,结构,2,),Windows,环境下,OpenGL,有关库函数,核心库(,OpenGL,),包含最基本的函数,其前缀是,gl,;这部分函数用于常规的、核心的图形处理实用库(,OpenGL utility library,,,GLU,),包含的函数功能更高一些,如绘制复杂的曲线曲面、高级坐标变换、多边形分割等,前缀为,glu,Glu,函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。
辅助库(,OpenGL auxiliarylibrary,,,GLAUX,),包括简单的窗口管理、输入事件处理、某些复杂三维物体(球、茶壶,)绘制等函数,前缀为,aux,它是为快速学习,OpenGL,而设计的,但是,windows only,实用工具包(,OpenGL Utility Toolkit,),第三方开发的函数库,函数名前缀为,glut,这些函数用于简单的窗口操作和消息处理,使用它可以不涉及具体的窗口系统WGL,函数,专门用于,OpenGL,和,Windows,窗口系统的联接,其前缀为,wgl,它使,OpenGL,和,windows,窗口系统紧密结合另外,还有五个,Win32,函数(,ChoosePixelFormat,,,DescribePixelFormat,,,SetPixelFormat,,,GetPixelFormat,,,SwapBuffers,)用来处理像素格式和双缓存,它们是对,Win32,系统的扩展,没有特定前缀3,),OpenGL,函数举例,glTranslatef(-1.5f,0.0f,-6.0f);/Move Left 1.5 Units And Into The Screen 6.0,glRotatef(rtri,0.0f,1.0f,0.0f);/Rotate The Triangle On The Y axis,glBegin(GL_TRIANGLES);/Start Drawing Triangles,glColor3f(1.0f,0.0f,0.0f);/Red,glVertex3f(0.0f,1.0f,0.0f);/Top Of Triangle(Front),glColor3f(0.0f,1.0f,0.0f);/Green,glVertex3f(-1.0f,-1.0f,1.0f);/Left Of Triangle(Front),glColor3f(0.0f,0.0f,1.0f);/Blue,glVertex3f(1.0f,-1.0f,1.0f);/Right Of Triangle(Front),glEnd();/Done Drawing The Pyramid,glTranslatef(1.5f,0.0f,-7.0f);/Move Righ。