3D视频API“三剑客” 欧子强 2001年 31期 在计算机行业中,所有软件的程序接口,包括3D图形程序接口在内,统称为API(Application Program Interface,应用程序接口)。API的出台使得软件开发工作者的工作更加轻松、容易。有了它,软件开发人员可以轻而易举地完成一些复杂程序的调试工作。当他们设计某项功能时,将不再需要知道硬件的特定参数,往往只在程序中添加一条或几条命令就足够了。API已成为软、硬件之间一种控制的“桥梁”。   在图形图像行业里,三维图形的API有许多种。这几年,有三种API格式逐渐确立了它们在图形领域的地位,它们是:Direct3D、OpenGL和Quick Draw 3D(Heidi)。   #1一、Direct3D    自从微软公司推出1.0版本的DirectX以来,它又魔术般地变出了DirectX 2.0版本和DirectX 3.0版本。在抛出DirectX 3.0后,并未像人们想象的那样继续推出DirectX 4.0,而是跳过DirectX 4.0版,直接把DirectX 5.0推向了市场。之后微软又马不停蹄地推出DirectX 6.0和DirectX 7.0,现在最新的DirectX版本是8.1。作为DirectDraw发展的产物,Direct3D实际上是DirectX多媒体家族的一员。一般来说,Direct 3D格式是基于微软的通用对象模式COM(Common Object Mode),同时也被应用于OLE(Object Linking And Embedding)链接与嵌入技术中。DirectDraw面向2D图形,而Direct3D作用于3D显示。它们作为两代标准,虽然有区别,但也可相互合作。例如,在对某帧图像处理时,Direct3D渲染3D对象,DirectDraw则设置2D背景位图,配合相当默契。    Direct3D可以仿真大部分软件中的3D渲染功能。目前Direct3D API的大多数用途是编写游戏软件,而这些游戏都不支持几何加速。就游戏而言,它是DirectX的主要设计成果。用Direct3D可以非常简单地调用3D图形加速卡的许多新的功能,游戏厂商将不需要过分依赖特殊的硬件设备就可以完成高质量的性能和表现效果。   一个完整的DirectX应用程序接口是由以下几个部分组成:    ──DirectDraw:该应用程序接口负责图形显示的管理。    ──DirectSound:对声音设备进行统一支持,同时在游戏应用中还增加了特殊3D声音效果。    ──DirectPlay:它可以提供有效方法使游戏满足个人微机的要求。这意味着多用户式的游戏只须通过一个标准的应用程序接口,就可以在调制解调器、电话线、直接电脑连线和使用TCP/IP的Internet上运行。    ──DirectInput:用通用的应用程序接口来统一管理所有的输入设备,如麦克风、游戏杆、高级游戏操纵杆等。    ──Direct3D:就游戏而言,它是DirectX的主要设计成果。用Direct3D,可以非常简单地调用3D图形加速卡的许多新的功能。用Direct3D,游戏厂商不需要过分依赖特殊的硬件就可以完成高质量的性能和表现效果。    ──DirectSetup:它的作用是安装所有的DirectX的组成部分。DirectSetup会测试其安装版本,并且智能地对用户使用的DirectX二进制码实行版本升级,同时安装更新的DirectX的驱动程序,使用户同步使用的应用程序更有效。   #1二、OpenGL    OpenGL是开放式图形GL语言的缩写。它是由Silicon Graphics(SGI)公司开发的,有Windows NT和Windows 95版,其API在工作站上具有可移植性。它是图形标准为图形库提供的一条简捷的途径。OpenGL是对网络透明的3D图形处理接口,用户可以通过一个简单易用的模块化接口生成高质量的3D图形图像。它在硬件、操作系统等方面是独立的,支持C、C++、Pascal、Lisp等多种语言。OpenGL作为一个独立平台,具有立即和显示表模式的鲜明特点,显示表存放着特定的序列,可以被反复使用。因此,进行对象描述时,直接从表上获取相关信息,可以产生很好的效果。但是,如果对象需要进行频繁处理,显示表上的信息就不得不随之更新,这将导致图形显示速度优势丧失殆尽。OpenGL为图形显示提供了一个宽广的范围,从渲染一个简单的几何点、线、多边形,到利用Phong光线、Gouraud阴影、纹理映射贴图、以及反锯齿的点、线、面对一个3D物体进行最复杂的3D变换、剪贴、采集和描绘。由于采用了模块和累加缓冲技术,OpenGL可高效地实现几何实体、阴影、全景反锯齿和动态模糊等效果。   #1 三、Quick Draw 3D(Heidi)     Heidi应用程序接口是Autodesk系列产品的“守护神”。就目前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%。(^31030901a^)