本文原载于《程序员》杂志2008年第2期,经原作者同意转载。3.SGI沦陷
1990年代中期,3D硬件还是昂贵稀罕的东西,无论是OpenGL还是Direct3D,很多时候实际的渲染是软件实现的。所谓软件渲染,也就是通过CPU计算来实现渲染效果。人们发现,在微软的Windows平台上,OpenGL的软件渲染速度比Direct3D慢很多倍。微软对此的解释是,OpenGL本身的设计是面向CAD类应用的,适用于精确严格的渲染,因此必须搭配昂贵的3D硬件才能表现突出。如果你想只用软件来模拟,对不起,由于OpenGL设计上的某些“缺陷”,它就是比DirectX慢很多倍,因为后者是从头到脚面向实时渲染而设计的。然而计算机图形专业人士怀疑,这根本就是不实之词,OpenGL与Direct3D在性能表现上的差异,根本就与设计无关,完全是因为微软没有用心实现OpenGL。但是光怀疑没用,你说微软实现得不好,你自己实现一个看看?说实话,这可不是一个容易的事情,没有两下子是绝对没戏的。
这时候,SGI站出来了。1996年,在新奥尔良举办的SigGraph会议上,SGI展示了他们实现的OpenGL for Windows,并且把Direct3D的几个流行demo移植到OpenGL上,将两者进行了针锋相对的比较。结果是显而易见的,OpenGL不但不比Direct3D慢,而且在某些方面还更胜一筹。API之战的第一回合,OpenGL获胜,结果不但是OpenGL给自己正了名,而且还迫使微软优化了自己的OpenGL实现。
不过,对于游戏开发来说,软件渲染还是太慢,无论是OpenGL还是Direct3D,软件渲染做做Demo还可以,要开发好玩的3D游戏,没有硬件支持那是不行的。1990年代中后期,3D硬件越来越便宜,迅速普及到家用PC上,这才使得高性能视频游戏飞入寻常百姓家。这时候,哪个API得到更广泛而高质量的硬件支持,哪个API就会表现出色。于是API之战的第二回合,就成为驱动程序之战了。而在这一方面,微软凭借其强大的产业控制力,显然占据优势。
战役主要发生在1997年。当时Windows 98正在做大规模的售前宣传,微软宣称,Windows 98将成为PC游戏玩家的最佳平台,因此,厂商们都在积极开发Windows 98上的游戏,争取在圣诞节大捞一票。到底是用OpenGL还是Direct3D呢?因为此前发生的Carmack公开信事件,很多游戏厂商都倾向于采用OpenGL。要在Windows 98上支持OpenGL,最好使用微软提供的一个驱动程序工具包,这个工具包基于微软开发的Mini-Client Driver(MCD),从而使得硬件厂商可以很轻松地开发OpenGL驱动程序。在1997年GDC大会上,大部分主流3D硬件厂商都展示了基于MDC的OpenGL驱动程序,但是由于MDC是微软的产品,而微软对OpenGL的态度又不明朗,因此游戏厂商还是不敢造次,老老实实地用DirectX开发。不久之后,游戏厂商的谨慎被证明是正确的,微软在1997年夏天,对那些企图在Windows 98上支持OpenGL的硬件厂商来了一次釜底抽薪,宣布说,除了开发阶段,任何厂商都不能获得MCD的使用许可。这等于是给那些基于MCD的OpenGL驱动程序判了死刑。一时间Direct3D无与争锋,仅仅一年时间就成为了3D游戏的事实标准。
来而不往非礼也,SGI再一次挺身而出。早在微软釜底抽薪之前,SGI实际上就提供了自己的OpenGL驱动程序工具包,在其中,SGI使用了一种完全不同于MCD的驱动程序支持模型,称为Installable Client Driver(ICD)。要从纯技术角度来看的话,ICD的好处是性能高,缺点是比较复杂,总体来讲是不如MCD的。可无奈你微软上屋抽梯,让人家硬件厂商无路可走,于是只好跟着ICD打游击了。渐渐的,基于ICD的OpenGL驱动程序越来越多,很多有影响力的游戏厂商开始重新考虑支持OpenGL。在这种局面下,微软也只好顺水推舟,重新放开MCD限制,允许厂商在Windows 98上支持OpenGL。第二回合,微软先赢后输,虽然一时间称霸3D游戏API领域,但是胜利并不稳定。
两回合下来,微软终于明白硬碰硬并不是好办法,需要另谋高招。1998年的SigGraph上,人们惊奇地发现,微软与SGI站在一起,宣布要共同开发一个新的、统一的3D图形API,他们称之为Fahrenheit Project。这个项目是谁构思出来的,微软是如何说服SGI的,现在已经无据可查。总之,按照当时的承诺,这个项目将在1999年或2000年推出实质产品。看到几年来拉锯般的3D API之战终于要结束了,合作时代即将到来,几乎所有人都兴奋不已。和平万岁!未来属于Fahrenheit!
战争结束,合作开始,SGI以满腔热情投入了Fahrenheit的开发之中,不但不再全力支持OpenGL了,而且连自己的起家之本——基于MIPS的图形工作站,也甩掉一边。公允的说,SGI的动机也不是那么单纯。对他们来说,MIPS图形工作站的衰亡史不可避免的,这一点十分清楚。普通Wintel PC很快就会让高端图形工作站变成昂贵的废物。那么如何在PC市场重现荣光呢?Fahrenheit项目毫无疑问是一个很好的切入点,跟PC软件领域的霸主合作,使得SGI有机会进入这个超级庞大的市场,并掌握3D图形API的标准,这种好事,当然不可错过!
问题在于,SGI看错了微软。微软岂能轻易放弃自己在3D领域好不容易获得的霸权,拱手把半壁江山让与SGI呢?到1999年年中的时候,情形已经非常明显,微软并没有遵守去年许下的诺言,事实上,微软除了派去几个专家参与制定Fahrenheit标准文档,做做表面文章之外,根本没有投入开发力量,从而把具体工作一口气全甩给SGI去做,让对手不再有足够资源投入到OpenGL上。同时,微软自己则继续将大笔资源倾注到DirectX的下一个版本——也就是日后打赢关键一仗的主力军——DirectX 7.0上。不但如此,微软还使出对付Borland和其它对手的老招数——挖角,不断以高官厚禄引诱SGI的顶级专家们。这样的搞法,Fahrenheit能成功才是见了鬼了。
一来二去,全世界都明白了,SGI被忽悠了!不过为时已晚。2000年,DirectX 7.0问世,一时间横扫3D图形市场。而传说中的Fahrenheit呢?则还只是停留在概念上的东西。Fahrenheit总架构师David Blythe被微软成功挖角。如今,这个当年OpenGL领域数一数二的顶级大师已经摇身一变成为DirectX 10的主设计师和Windows Presentation Framework的主要设计者之一。好一个Fahrenheit项目!让微软人财两得,而SGI不单是赔了夫人又折兵,更失去了广大OpenGL社群的尊敬,不可不谓惨。
打输这一仗,SGI算是把老底和老脸都输光了。自那以后,SGI每况愈下,直到2006年,终于难以支撑,向法院申请破产。一代高科技传奇,竟落得这般田地。
好在毕竟技术底子雄厚,在2007年,SGI成功地经历了一次重组。重组后的SGI,变成了一个超级计算机、服务器集群和存储的系统厂商,跟图形已经基本没有关系了。不知道如今SGI的人看到公司名字里的“G”,鼻子会不会酸呢?
好在OpenGL并没有因为SGI的沉沦而完蛋,相反,失去了商业巨头的支撑和控制,OpenGL反倒真正成了开放的API,获得整个产业的支持。
4.凤凰涅磐
进入21世纪之后,图形软件市场发生了有趣的变革。首先,由于Web的大发展,微软在桌面操作系统上一统天下的局面出现了松动。如今,人们开发一个桌面应用程序必须考虑在Windows和Mac,甚至还有Linux三个平台上的可移植性,这就使得OpenGL的标准和开放性成为一个重大的优势。其次,图形硬件市场实现了整合,nVidia和ATI成为GPU市场的领袖,它们具有足够的财力和技术实力,可以按照自己的意愿对OpenGL提供第一流的支持。第三,更重要的变革在于,PC已经不再是唯一的3D图形应用平台,智能家电、游戏机、手机、PDA、车载计算机、工业设备、机器人等都成为新的图形应用平台。在这些平台上,OpenGL是独一无二的首选方案。微软不但是后来者,而且恰恰因为微软在PC软件领域的巨大成功,从而引起整个产业对它四面设防,从而使它很难取得大的成功。
2002年,OpenGL 1.4完成,使OpenGL在固定管线技术上达到了最高峰。2004年,划时代的OpenGL 2.0推出,引入了GLSL,允许开发者使用可编程管线功能,从而使OpenGL登上了现代图形硬件发展的快车。2006年8月,OpenGL 2.1发布,成为当前主流的OpenGL版本。
凤凰涅磐的时刻即将到来。按计划,OpenGL 3.0将于2008年推出。这个新的标准在保留对传统API支持的前提下,从头开始全新设计,提出了更先进的图形概念和对象模型,从而走到了图形编程的最前沿。
此外,更令人兴奋的或许是OpenGL ES。这个专供嵌入式系统使用的OpenGL“精简版”如今已经是手机、PDA、车载设备等嵌入式平台上的标准图形API。只要想想手机的用户量,我们就不难憧憬OpenGL ES的光明灿烂的前景。给所有人以希望,这就是开放的伟大之处。
在以后的日子里,我们大概不会再见到十年前那样激烈的API战争了,因为开放已经成为我们每个人的共识。但是,这段历史却不应该被遗忘。正如马克吐温所说,历史不会简单的重复,而是会变奏式的重复。我们应该保持警惕,珍视开放和自由带给每个人的价值。(全文完)
分享到:
相关推荐
总结来说,微软与开放标准的纠葛反映了软件行业对开放性和标准统一的追求与企业利益之间的冲突。微软的行动往往受到其商业模式和市场份额的制约,这使得它在开放标准的讨论中处于一个微妙的位置。无论微软的开放举措...
微软的一些内幕,喜欢可以下载! 此为完整版,喜欢可以找下正版1
是微软WebCast点播——.net Windows开发中的文件和流讲解,讲解清楚,还有实例,不可多得的好东东。
本主题将在剖析微软云计算服务平台Windows Azure架构、开发方法的基础上,与您进一步分享微软关于云计算平台中涉及到的各种服务如.NET Services、SQL Data Services、Live Services,揭开微软云计算的面纱。...
《观止——微软创建NT和未来的夺命狂奔》是一本深入探讨微软公司发展历史,尤其是NT操作系统创建过程的重要书籍。这本书以独特的视角揭示了微软如何在科技行业中崛起,以及NT系统如何奠定现代Windows操作系统的基础...
内含ppt,视频,文档,示例!!!!!!!
人工智能机器人面临的伦理困境——以“微软小冰”为例.pdf
这本书包含了经典的面试题目,里面有微软的面试题目,笔者通过自身的经历,历尽纪念心血完成这部书。他把他的人生求职经验毫不保留的告诉了大家
微软中国研究院和北京大学的合作,在北京大学计算机系新增研究生课程“先进技术专题”,微软中国研究院将负责授课、课程设计选题和参加评估。该课程由七次构成,本课程是第二课:How to Research如何做研究,由微软...
内含ppt,视频,文档,示例!!!!!!!
NC 与微软AD 的那点事儿——用友NC 与微软AD 对接服务解决方案 NC 与微软AD 对接服务解决方案是指用友NC 与微软AD 之间的集成解决方案,该解决方案旨在实现用户身份认证和信息同步。下面是该解决方案的详细知识点...
微软虚拟机——Microsoft+Virtual+PC+中文版.pdf
揭秘微软亚洲研究院。 揭秘微软亚洲研究院。 揭秘微软亚洲研究院
总结来说,这篇文章主要讲述了通过调整Windows系统的区域和语言设置,以及使用特定的卸载工具和代理服务器设置,来观看微软互联网视频中的美剧内容。同时,用户应该了解可能存在的地域限制和版权问题,遵循相关规定...
在深入探讨《观止——微软创建NT和未来的夺命狂奔》这本书之前,我们需要先了解其标题所涉及的核心概念。首先,“观止”通常意味着某种极致体验或达到某种境界的体验,这里则是书名的象征性表达。而“微软”作为科技...
C#——微软.NET的第一语言--------------
这个“Win10全部图标——微软”压缩包包含了Windows 10系统中的所有官方图标,可供用户自定义使用,即使他们的操作系统并非Windows 10。 首先,我们来了解图标设计的重要性。图标设计不仅是美学上的考虑,更关乎...