<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 三维图形的三大“王牌”接口
 

三维图形的三大“王牌”接口


——谈谈人们最想了解的Direct3D、OpenGL、Heidi接口
一、什么是API?
  在计算机行业中,所有软件的程序接口,包括3D图形程序接口在内,统称为API(Application Program Interface)——应用程序接口。我写这篇文章的主要目的,是让读者能够对三维图形中最基本、最常用的3种API格式有一些详细的了解,以便能在工作中成为小专家。
  简单地说,API的出台使得软件开发工作者的工作更加轻松、容易。有了它,各种软件的接口功能就有了可比性。过去,如果您想让它们发挥最大功效,必须做的一件事,就是记录相关硬件设备的地址。现在,API已成为软、硬件之间一种控制的传媒,这道工序就可以省略了。
  开发API的相应功能,首先需要详尽的定义的标准,这些标准在硬件开发、完善阶段已经由生产厂商加以制定,按照提供的标准,软件开发人员可以轻而易举地完成一些复杂程序的调试工作。当他们设计某项功能时,也不再需要知道硬件的特定参数,往往只在程序中添加一条或几条命令就足够了。

二、常用的API格式
  在图形图像行业里,三维图形的API有许多种。这几年,有3种API格式逐渐确立了它们在图形领域的地位,它们是:Direct3D、OpenGL和Quick Draw 3D(Heidi)。MGA MillenniumⅡ、Mystique 220、G100图形加速卡和ELSA图形卡都支持这3种格式。由下面这张对比表可以看出,它们在界面及功能上的差异确实不大。
  这3种常用的API格式在使用中都体现了一定的扩展性、灵活性和便捷性等,而这些正是图形用户们在乎的。
  附表 :3种图形接口比较表
功 能 Direct3D OpenGL Heidi
阿尔发混合(Alpha Blending) √ √ √
纹理映射(Texture Mapping) √ √ √
MIP映射(MIP Mapping) √ √ √
视频动态映射(Video Motion Mapping) √ × √
雾化(Fogging) √ √ √
抗失真过滤(Anti-aliasing Filter) √ √ √
直接描绘法(Flat Shading) √ √ √
Gouraud描绘法 (Gouraud Shading) √ √ √
Phone描绘法 (Phone Shading) × × ×

光辉的Direct3D
  自从微软公司推出1.0版本的DirectX以来,它又魔术般地变出了DirectX 2.0版本和DirectX 3.0版本。在其抛出DirectX 3.0后,并未象人们想象的那样继续推出DirectX 4.0,而是跳过DirectX 4.0版,直接把DirectX 5.0推向了市场。
  今天这五个DirectX版本是:DirectX 1.0、 DirectX 2.0 、DirectX 3.0 、DirectX 3.0a 、DirectX 5.0。 目前微软公司正在开发DirectX 6.0,预计将同Windows NT 5.0同时推出。
  (1)DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图象进行加速。这时候的DirectX不包括现在所有的3D功能,但如果您打算制作高级游戏的话,那它就是入门的起步点。
  (2)DirectX 2.0版本的应用程序接口中采用了Direct3D的内容,这种结构使DirectX 2.0和DirectX 1.0有根本不同。在DirectX 2.0中,3D应用程序接口是采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图象进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。
  (3)DirectX 3.0版本是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。
  (4)DirectX 3.0a版本是修正了错误的升级版。在这里,主要的是针对DirectX安装程序的修改。在一些图形加速卡(如加拿大Matrox公司的MGA 系列图形卡)的安装程序上,用不通知或合适/有效的选择方式改写用户的显示驱动程序,以便图形卡的加速性能更好。
  (5)DirectX 5.0主要是针对应用程序接口进行升级。在DirectX 5.0中,为了大幅度提高性能,微软对Direct 3D的内容做了彻底修改,并且使游戏开发商们移植到他们的应用程序接口中更容易、更方便。除此之外,许多应用程序接口的细节部分也得到了改进。
作为Windows下的X模式和DirectDraw发展的产物,Direct3D实际上是DirectX多媒体家族的一员,Windows 95使用了它,主要目的是提高系统缓慢的3D显示速度。一般来说,Direct 3D格式是基于微软的通用对象模式COM(Common Object Mode),同时也被应用于OLE(Object Linking And Embedding)链接与嵌入技术中。DirectDraw面向2D图形,而Direct3D作用于3D显示。它们作为两代标准,虽然有区别,但是也可以相互合作。例如,在某帧图象处理时,Direct3D渲染3D对象,DirectDraw则设置2D背景位图,配合相当默契。微软公司宣称,在最新推出的DriectX 5.0版本里,已经对Direct3D的一些薄弱环节进行了修正。
  Direct3D可以仿真大部分软件中的3D渲染功能。目前Direct3D API的大多数用途是编写游戏软件,而这些游戏都不支持几何加速。就游戏而言,它是DirectX的主要设计成果。用 Direct3D可以非常简单地调用3D图形加速卡的许多新的功能,游戏厂商将不需要过分依赖特殊的硬件设备就可以完成高质量的性能和表现效果。

DirectX的组成部分

  一个完整的DirectX应用程序接口是由以下部分组成:
  DirectDraw:该应用程序接口负责显示内存的管理。
  DirectSound:对声音设备进行统一支持,同时在游戏应用中还增加了特殊3D效果。
  DirectPlay:它可以提供有效方法使游戏满足个人微机的要求。这意味着多用户式的游戏只需通过一个标准的应用程序接口,就可以在调制解调器、电话线、直接电脑连线和使用TCP/IP的Internet上运行。
  DirectInput: 用通用的应用程序接口来统一管理所有的输入设备,如麦克风、游戏杆、高级游戏操纵杆等。
  Direct3D: 就游戏而言,它是DirectX的主要设计成果。用 Direct3D,可以非常简单地调用3D图形加速卡的许多新的功能。用    Direct3D,游戏厂商不需要过分依赖特殊的硬件就可以完成高质量的性能和表现效果。
  DirectSetup:它的作用是安装所有的DirectX的组成部分。 DirectSetup会测试其安装版本,并且智能地对用户使用的DirectX二进制码实行版本升级,同时安装更新的DirectX的驱动程序,使用户同步使用的应用程序更有效。

非凡的OpenGL
  谈到OpenGL,先看以下两点:
  (1)立即模式和保留模式
  立即模式,是一种源程序模式,它与硬件设置密切相关。
  保留模式,也是一种源程序模式,只是它的大半都是通过一个API接口预先定义好的。
  人们通常认为,程序接口的优劣与两个因素有关,即:硬件水平和程序员直接控制相关硬件功能的程度有关。所以,立即模式更多地被视为一种低级模式。而保留模式,则因为符合这一规定,被视为一种高级模式 。
  (2)由于专业领域使用的CAD/CAM软件获得了巨大成功,现在OpenGL已经稳稳占据纯三维PC市场。那么,什么是OpenGL呢?GL是三维图形技术中图形库的简称。GL支持立即模式的接口。立即模式的好处是可以省略先将图形存储于数据结构的步骤,使用立即模式修改应用软件更容易,显示图形更方便。使用GL技术可以轻松开发出具有实时交互能力的三维图形软件。
  OpenGL是开放式图形GL语言的缩写。它是由Silicon Graphics(SGI)公司开发的,有Windows NT和Windows 95版,其API在工作站上具有可移植性。它是图形标准为图形库提供的一条简捷的途径。OpenGL应用程序接口的版权属于SGI公司,其标准由OpenGL结构监察组指定。该监察组的成员有IBM、Intel、Microsoft、DEC、SGI、Intergraph、Evans&Sutherland。
  OpenGL是对网络透明的3D图形处理接口,用户可以通过一个简单易用的模块化接口生成高质量的3D图形图像。它在硬件、操作系统等方面是独立的,支持C、C++、Pascal、Lisp等多种语言。OpenGL作为一个独立平台,具有立即和显示表模式的鲜明特点,显示表存放着特定的序列,可以被反复使用。因此,进行对象描述时,直接从表上获取相关信息,可以产生很好的效果。但是,如果对象需要进行频繁处理,显示表上的信息就不得不随之更新,这将导致图形显示速度优势丧失殆尽。OpenGL为图形显示提供了一个宽广的范围,从渲染一个简单的几何点、线、多边形,到利用Phong光线、Gouraud阴影、纹理映射贴图、以及反锯齿的点、线、面对一个3D物体进行最复杂的3D变换、剪贴、采集和描绘。由于采用了模块和累加缓冲技术,OpenGL可高效地实现几何实体、阴影、全景反锯齿和动态模糊等效果。
  OpenGL程序应用接口的最大贡献就是“通过高级语言,降低了专用图形加速卡的成本,最终导致整个PC图形系统价格的降低,从而抢占了RISC/UNIX系统工作站的市场!”
  Heidi应用程序接口是Autodesk系列产品的守护神。Autodesk是目前全球CAD/CAM/CAE/GIS/MM工业领域中拥有用户量最多的软件公司,也是基于PC平台的全球最大的CAD、动画及可视化软件公司。就目前的AutoCAD的应用状态和用户类型来看,从事纯三维设计的小于25%(用于大型装配设计和复杂工程分析),从事纯二维设计的约25%(用于绘制企业生产性数字化二维工程图),而既从事二维绘图又从事三维设计的大于50%(广泛用于零部件和一般装配设计分析)。Heidi就是Autodesk在CAD、动画及可视化软件领域中最重要的主流支撑应用软件接口。Heidi和OpenGL 的区别在于:它不能通过显示表进行操作。Heidi是一个纯粹的立即模式接口,主要适用于应用开发。著名的3D程序软件,如3D STUDIO MAX/VIZ、AutoCAD 12/13/14、经济建模、商业图形演示和机械设计等都使用Heidi系统。与OpenGL 相比,Heidi还只是一种原始对象接口,功能请求单一化,是靠使用标准界面或者直接利用特定的3D芯片来进行硬件加速。如果没有硬件的密切配合,在对大型的高质、高分、高刷的图形工作时,显示效果会受到很大的影响。Heidi的突出特点是灵活多变,这要归功于Plug-ins(插入式结构)和内部定义的Heidi接口。
  简单地说,OpenGL只支持用于大型装配设计和复杂工程分析的纯三维设计工作,其用户群小于25%;而Heidi可以广泛支持用于零部件、一般装配设计分析、工程设计建模、电子游戏开发、影视动画制作及可视化软件领域等既从事二维绘图又从事三维绘图的主流设计工作,其用户群大于70%。
  到此,三维图形的三大“王牌”接口讲完了。我想大家应该对Direct3D、OpenGL和Heidi的渊源、特点和用途有了一些简单的了解。为了加深印象,最后我总结了三句话:“三大接口,各不同;D3D玩游戏;OpenGL用3D;Heidi是主流!”
  好了,就同大家聊到这里吧。

本文摘自:专题总汇

上一篇:主流显卡选购策略

下一篇:3D接口技术