微软与开放——不得不说的故事(转载)
Posted myan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微软与开放——不得不说的故事(转载)相关的知识,希望对你有一定的参考价值。
本文原载于《程序员》杂志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战争了,因为开放已经成为我们每个人的共识。但是,这段历史却不应该被遗忘。正如马克吐温所说,历史不会简单的重复,而是会变奏式的重复。我们应该保持警惕,珍视开放和自由带给每个人的价值。(全文完)
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战争了,因为开放已经成为我们每个人的共识。但是,这段历史却不应该被遗忘。正如马克吐温所说,历史不会简单的重复,而是会变奏式的重复。我们应该保持警惕,珍视开放和自由带给每个人的价值。(全文完)
以上是关于微软与开放——不得不说的故事(转载)的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 20周年,我和VS不得不说的故事(内含福利)