计算机图形软件(三)6-2 图形功能、软件标准、其他图形软件包

       图形功能

        通用图形软件包为用户提供建立和管理图形的各种功能。这些子程序可以按照它们是否处理输出、输入、属性、变换、观察、图形分割或一般的控制而进行分类。
        图形的基本构造块称为图形输出图元(graphics output primitive)。它们包括字符串和几何成分,如点、直线、曲线、填充区域(通常为多边形)以及由彩色阵列定义的形状。此外,有些图形软件包提供对复杂形体(如球体、锥体和柱体)的显示函数。生成输出图元的函数提供了构造图形的基本工具。
        属性(attribute)是输出图元的特性。也就是说,属性描述一个特定图元是怎样显示出来的它们包括颜色设定、线型或文本格式及区域填充图案等。
我们可以使用几何变换(geometric transformation)来改变场景中一个对象的大小位置或方向。某些图形包给出一组函数实现建模变换(modeling transformation)将建模坐标系中给出的对象描述组织成场景。这些图形软件包通常提供描述复杂对象(如电子线路或自行车)的树形结构另外一些软件包仅简单地提供几何变换函数,而将建模细节留给了程序员。

        利用对象形状及其属性的描述函数构造场景之后,图形软件包将选定视图投影到输出设备。观察变换(viewing transfomation)用来指定将要显示的视图、使用的投影类型及在输出显示区城出现的范围。另有一些函数通过指定位置、大小和结构来管理屏幕显示范围。对于三维场景还要判定可见对象并应用光照条件。
        交互式图形应用使用多种输入设备,如鼠标数据板或操纵。输入函数(imput function)用于控制和处理来自这些交互设备的数据流。
        有些图形软件包也提供将一个图形描述分制成一组命名的组成部件的函数。另外有一些函数以各种方式管理这些图形部件。
        最后,图形软件包常常包含许多事务性任务,如将显示屏变成指定颜色及对参数进行初始化。我们可以将这类处理事务性任务的功能归入控制操作(controloperation)类。

 软件标准


         标准化图形软件的最主要目标是可移植性。当软件包按标准图形功能设计时,软件可以方便地从一个硬件系统移植到另一个,并且用于不同的实现和应用。如果没有标准,那么不经过大量的重新编写,常常不能将一个为硬件系统设计的程序移植到另一个系统。国际组织和许多国家的标准化组织进行了合作,努力开发能被大家接受的计算机图形标准。在付出了相当大的努力后,最终在1984 年推出了图形核心系统(Graphical Kemel SystemCKS)。该系统成为国际标准化组织(International Standards Organization,IS0)和许多国家的标准化组织包括美国国家标准化组织(American National Standards Institute ANSI)接受的第一个图形软件标准。        虽然CKS 最初的设计是一个二维图形软件包,但三维 GKS 扩展随后也开发出来。已制定出来并得到标准化组织批准的第二个图形软件标准是程序员级的分层结构交互图形标准(Programmer’sHierarchical Interactive Graphics Standard,PHIGS),它是对CKS 的扩充。PHICS 提供了层次式对象建模、颜色设定、表面绘制和图形管理等功能。此后,PHIGS 的扩充称为 PHIGS +,用于提供PHIGS所没有的三维表面明暗处理功能。
        随着GKS 和 PHICS 得到开发SGI公司的图形工作站逐渐行。这些工作站使用称为GL(Graphics Library)的函数集CL 很快成为图形界广泛使用的图形软件包。因此GL成为事实上的图形标准。GL 函数为快速、实时绘制而设计,很快便扩展到其他硬件系统中。结果,作为 GL 的与硬件无关的版本,OpenGL在20 世纪90 年代早期就制定出来。这一图形软件包现在由代表许多图形公司和组织的OpenGL结构评议委员会(OpenGL Architeture Review Board)进行维护和更新。OpenGL函数库专为高效处理三维应用而设计,但它也能按z坐标为零的三维特例来处理二维场景描述。图形函数定义为独立于任何程序设计语言的一组规范。语言绑定(language binding)则是为特定的高级程序语言而定义的。它给出该语言访问各种图形函数的语法。每一个语言绑定以最佳地使用有关的语言功能及处理好数据类型、参数传递和出错等各种语法问题为目标来定义图形软件包在特定语言中的实现描述由国际标准化组织来制定。OpenGL的C和C+语言绑定也一样如此。OpenGL的Java 及 Python 等语言绑定也已经问世。在本书后面我们把OpenGL的C和C++语言绑定作为讨论基本图形概念和图形软件包设计及应用的框架,并且使用 C++ 语言的序例子来给出 OpenGL 的应用及图形函数的实现算法。

其他图形软件包

        已开发的计算机图形程序库有很多,有些提供通用的图形函数,有些则以专门应用或动画虚拟现实或因特网图形等计算机图形学的特定应用为目标。
        OpenInventor 软件包给出一组用来描述场景的面向对象函数其描述的场景通过OpenCL来显示。虚拟现实建模语言(Virtual-Reality Modeling Language,VRML)最初是Open Inventor 的一个子集,可用来建立因特网上虚拟世界的三维模型。我们也可以使用为 Java 3D 语言开发的图形库来构造 Web图形。还可以用Java 2D 创建 Java applet中的维场景或者使用Java 3D 生成三维Web 显示。Pixar公司的 RenderMan Interface 可用来生成各种光照模型下的场景。最后,Mathematica、MatLab和Maple等另一类系统中也经常提供图形库。

你可能感兴趣的:(计算机图形学,计算机图形学)