主题:  三维图形软件的利器——OpenGL

荣誉版主

职务:普通成员
等级:1
金币:0.0
发贴:87
#12001/1/4 18:09:06
三维图形软件的利器——OpenGL

OpenGL——面向图形硬件
目前,计算机图形学技术已经进入到了三维真实动感图形时代。三维图形的制作、展示及应用在我们周围无处不在。OpenGL则是利用计算机生成三维真实图形的基本工具之一。
OpenGL是面向图形硬件的强有力软件接口,它允许图形开发人员产生二维及三维形体高质量的彩色图像。OpenGL是在SGI公司推出的I
RIS GL图形库的基础上发展起来的,现在成为适用于各种计算机环境下的三维图形应用程序接口(3D API),即开放式的三维图形标准。
OpenGL现由业界著名的OpenGL体系结构评审委员会(ARB)控制。该委员会的主要作用是评审OpenGL的功能扩展,制定它的技术规范。C
ompaq、IBM、Intel、Microsoft、SGI等9家大厂商都是这一委员会的成员。OpenGL不仅符合业界标准,而且简单易学、使用方便。
OpenGL可广泛应用于PC、工作站和超级计算机上。目前虽然也有一些符合ANSI和IS O的三维图形标准,如GKS-3D和PHIGS,但并没有得到计算机工业界的广泛支持。
OpenGL与硬件和操作系统相独立,但也可以集成到Unix、Windows
95等操作系统中。OpenGL的应用程序接口属于低层的、面向图形硬件的软件接口,它由gl或GL作为前缀的一系列命令组成。编程人员利用OpenGL命令可以创建活动的三维彩色图形的交互式程序。基于Open
GL开发的大量三维图形应用软件已广泛用于可视化、CAD/CAM、仿真、GIS、VR 、娱乐、医学等领域。
OpenGL包含大量功能强大的图形函数,开发人员可以利用这些函数对整个三维图形进行光色渲染,从而方便、快速地绘制出与客观世界十分逼真的三维景象。此外,OpenGL还可以进行三维图形交互、动作模拟等操作。
OpenGL++——面向对象
OpenGL作为三维图形应用程序接口,最初使用在即时图形模式中,它提取组成图形的基本元素,然后按照编程人员的指令对其着色渲染。由于OpenGL是面向硬件的,因而能快速、有效地生成各种图形元素并构成一幅场景。但是,OpenGL API不能把本帧画面的图形信息传送给下一帧画面。为了实现这一功能,OpenGL必须具有保留模式的功能,即允许开发人员能复制画面之间相关的元素,并保留、存储、连接到下一帧画面中去。
OpenGL++是建立在OpenGL上的三维图形应用程序接口。它是一种场景图形(Scene Graph)的API。所谓场景图形就是由结点与有向边组成的无环路有向图(DAG)。图中结点可以存储图形数据及构成类的结构。DAG实质上是一种层次结构图,但是它的子结点可以有多个父结点。结点也是一个具有属性和操作的类(Class)。类的实例就是对象(Ob
ject)。OpenGL++的操作可以分成两种类型:一种是对场景图的构造和修改;另一种是对场景图的遍历。通过对场景图的遍历,可以生成经过优化的图形。
OpenGL++是用面向对象的编程语言表示的,因此它具有面向对象程序设计的优点,如封装性、继承性、动态束定的多态性、灵活性好、编程效率高和使用方便等。
对于编程人员而言,OpenGL++提供场景中各个部件的描述以及部件之间相互关系的描述,这些关系可以是静态的,也可以是动态的。
OpenGL++能有效地支持各种可视化应用及数据格式。由于OpenGL的编程界面与文件格式无关,因此可用任何格式来描述、观察并与场景交互。
利用OpenGL++,编程人员可以建立持久的对象(Persistent Objec
t),因此它具有保留模式的功能。
由OpenGL++定义的图形对象,通常可以装配到场景中,然后再进行剪取、着色渲染及求交测试。在场景中的结点可以相互连接并与低层
OpenGL中的形体相连,以便为可视化提供结构化的框架。场景元件的这种特征使它可以直接使用低层OpenGL的工具。
从实现者的角度看,OpenGL++是类的集合。组成场景的结点可以组成类,各种对象也可以组成类。确立这样规范的目的是更方便地描述各种各样的类,以及有关它们的状态和操作。
OpenGL++用不着对低层图形库做选择,但是它的低层图形元件就是OpenGL。用OpenG L++来建模比OpenGL更容易,而且在OpenGL++上可以再建立其他的API。OpenGL++的API可以提供对速度与品质的折衷选择。这样在做着色渲染时具有更大的灵活性。为了体现性能第一的观点,利用OpenGL++建模,可以极快地观察到什么情况下性能会更好,什么情况下性能会更差。
从扩展者的角度来看,OpenGL++的体系结构更具扩展性。扩展可以采用两种方式:第一种形式允许实现人员在场景中增加新的对象和操作;第二种形式允许编程人员在库中增加新的对象,并对场景做各种操作。虽然在编译时也能对场景中的类进行扩展,但不能扩展很多。O
penGL++可以提供运行时的可扩充性,这一点和Windows中的动态链接库功能相似,因此不但可以提高系统的资源利用率和编程效率,而且使应用程序对场景图形的扩展变得相当简单。
OpenGL Optimizer——面向高层
建立在OpenGL++顶上的OpenGL Optimizer是一个适用机械CAD领域的高层三维图形应用程序接口。注意大模型细节,同时保持跨平台环境是OpenGL Optimizer的基本优点。由于它遵循大模型可视化API协议,因此它是一个开放的符合业界标准的三维图形应用程序接口。
OpenGL Optimizer简化了大模型和场景,节省了着色渲染的时间,它采用了反图形(A ntigraphics)功能——剪去模型后面的物体,因为没有必要浪费资源对一个处在模型后面看不到的物体进行渲染。Open
GL Optimizer的遮盖提取技术是图形技术发展的一大进步,它能推动软件人员产生他们想要的细节层次,然后删去远处或不重要的物体,从而达到提高渲染速度的目的。
OpenGL Optimizer提供了先进的镶嵌技术,它可以用较少的多边形获得较清晰的图形。
性能是评价技术的关键。一个OpenGL Optimizer命令所做的工作是OpenGL 几十个命令才能完成的工作,因此使用Optimizer可以更快地创建更多、更复杂的模型。
OpenGL Optimizer拥有模块化组件,它们在给定的软硬件配置上很容易使应用程序在渲染优化和复杂形体分解优化上达到均衡,以获得最好的整体性能。
OpenGL Optimizer通过集成的工具进行性能优化,为用户和开发者提供了无可匹敌的大模型可视化和交互功能。
三种OpenGL的关系及未来
OpenGL Optimizer和OpenGL++及OpenGL 之间关系如附图所示。
最近,SGI和Microsoft结成战略联盟,双方合作制定了一个名为"F
ahrenheit"的计划。该计划允许两公司联合定义、开发及提交一套新的图形应用程序接口。
开发人员利用图形API可以充分发挥计算机的加速功能。Fahrenh
eit将把Microsoft 面向软件的图形API Direct 3D与SGI面向硬件的图形API诸如OpenGL 、OpenGL++及Open GL Optimizer两家之长融合在一起。
Fahrenheit计划包括3个部分:附图
1. Fahrenheit低层API将成为客户及专业应用程序开发人员在Wi
ndows环境下主要的图形API。该低层API将从Direct 3D及OpenGL演变而来,同时为Microsoft的Direct 3D及SGI的OpenGL提供向下的兼容性。
2. Fahrenheit Scene Graph为开发人员在Windows及SGI的IRIX环境下创建消费类及专业应用程序提供面向对象的编程接口。该编程接口将从SGI的OpenGL++演变而来。它可以帮助开发人员开发复杂图形的应用程序。
3. Fahrenheit大模型可视化扩展建立在SGI OpenGL Optimizer
API及Microsoft的Direct Model的基础上,它可以与场景图形API一起使用。
这个高层三维图形应用程序接口可以对大型三维模型进行交互操作。大模型可视化扩展API还可以简化与多种分辨率的场景图形API的连接,因而使开发人员更易编写各种具有大模型扩展功能的应用程序,并且更方便地与大模型可视化数据库进行交互。上述计划还将与计算机界领先厂商如Intel公司进行合作。
图形API对于现实世界的各种集成问题,如:共享文件、数据、系统的互操作性、共享网络协议及协同工作,具有积极推动作用。Fahrenheit计划中的API的驱动程序工具包及软件开发工具包将在2000年前分阶段实现。