Fahrenheit 图形API

来源:互联网 发布:软件开发面试 编辑:程序博客网 时间:2024/05/17 08:19

来自Wikipedia,免费的大百科全书。

译者:Simon Chan

 Fahrenheit意在为三维图形建立一个统一的上层API。由MicrosoftSGIHP三家公司设计以便使得Direct3DOpenGL趋成一体。先前有关Fahrenheit的很多计划都已经弃置,MicrosoftSGI也放弃了合作的努力。最后,只有Fahrenheit计划的scene graph部分得以发布,也就是所谓的XSG,但不久也销声匿迹了。

90年代中期,MicrosoftSGI取得OpenGL的许可,作为Windows NT 的三维基础系统。其时,OpenGL已是事实上工作站的三维标准,MicrosoftWindows NT定位于工作站级的操作系统,OpenGL显然是一个前提要求。令人迷惑不解的是,Microsoft旋即收购了RenderMorphics,取得其所有的RealityLab 2.0,这是一个针对低端市场的三维API。将它重命名为Direct3D 3.0后,微软将它发布并成为Windows 95和游戏编程的主打三维API。这个举动激起巨大的争议,涉及Microsoft内外,主题有关于两个API的优点,以及是否该发展Direct3D等等。

整个90年代中期SGI一直努力在OpenGL之上建立一个更上层的API以简化编程。到1996OpenGL++应运而生,这是一个基于OpenGL的保留模式(retained-mode)的C++API。他们建议一个以此改编的API,架构于OpenGL或者Microsoft正在开发的高效底层API之上。这将会隐藏实现细节,而使得OpenGLDirect3D之争纯属多余,同时又为更为稳定的面向对象(object oriented)的开发环境提供一个上佳的高层API

1997年后期,MicrosoftSGI开始开发Fahrenheit计划的系统。SGI负责提供在大多数应用程序中使用的中等规模的(mid-sizedAPIFahrenheit Scene Graph和一个修订的版本,Fahrenheit Large Model用来处理CAD程序中大量的模型数据。MicrosoftWindows提供一个新的底层绘制引擎,即Fahrenheit Low Level,实际上是Direct3D的替代品。这个计划在SIGGRAPH 1998正式宣布,并定于19992000年之交发布。

Fahrenheit成为SGI的开发重心。他们基于MIPS 的工作站在性能上很快失去了90年代的领先地位,而普通的PC却正慢慢逼近高端的图形市场,公司陷入了严重的危机。SGIFahrenheit为出路所在。一旦完成他们就可以转到PC的行列里来,为一个通用的API提供最好的开发工具。同时他们开始向Fahrenheit移植已广泛使用的开发工具Open Inventor OpenGL Performer,这样等到Fahrenheit完成,他们就可以给新老客户提供齐全的开发环境。  

1999年,SGI很清楚Microsoft无意发布Low Level。虽然官方说法还在继续,实际上已经没有资源投入来编码。而在同时Microsoft正倾力于打造DirectX 7.0(与3.0只是名称上相似)。没有Low LevelFahrenheit不可能发布,这个计划只能停止。SGI在这个项目中的如意算盘是希望从MIPS平台转向基于WindowsPC,现在只能眼睁睁看着Microsoft不动分毫就摧毁了其商业计划。SGI只得放弃,把权利移交给微软,重新制定商业计划。

2000年,DirectX 7.0已经上市,也相当流行。借90年代后期3D游戏崛起之机遇,DirectX一跃成为主流的接口。同年Scene GraphXSG)也获发布,但Microsoft表示不提供支持维护。自此以后,再没有新的XSG版本能够发布。有关FahrenheitXSG的内容在Microsoft以及SGI的网页上也不见了踪迹。OpenGL硬件加速的支持在Windows XP自带的显卡驱动中给丢弃,但大多数显卡厂商提供了各自的实现。

相较于Open Inventor Iris PerformerXSG也注入了新鲜的设计理念。图元组合和遍历的方法(the composition primitives and traversal methods)允许应用程序以最适宜可视的方式来构造场景,又可以利用场景图优化器(scene graph optimizer)重新构造场景使得绘制更有效率而不失其本来面目。开发者只需自然而为,系统自会使其快速运行。

流水线的绘制方式允许多线程程序在不同的线程中构造场景,拣取图元和绘制(借鉴了Performer app-cull-draw 流水线)。场景的图元数据也优化存储使得多线程之间勿需拷贝复制。

XSG另一个独特的功能是开发者可以用自己的图遍历方法替换大多数内置的版本。同时也可以撰写新函数来快速访问XSG中用已知方法存储的数据,而又能够融入现有的绘制路径。

David Blythe, 曾经是SGI Fahrenheit 项目的首席架构师,现在服务Microsoft,致力于 DirectX 10 WGFWindows Graphics Foundation)项目。

原创粉丝点击