微软与三维图形:抑制竞争和创新的案例研究

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

原文Microsoft and 3D Graphics: A Case Study in Suppressing Innovation and Competition

作者Alan Akin

译者Simon Chan

前言

本文原始稿撰于19977月,该稿内容都还存在于本文前言的后续部分(为保持连续性之故,进行少量更改,包括更新了链接)。所以,读者如果熟悉该原始稿,请径往19988月之更新阅读,否则,还是请从介绍小节开始。

介绍

在过去的五年里,三维图形(3D Graphics)已经成为PC世界的一项关键技术。在两个领域里,其已成为必需的要求。第一是计算机辅助工业和机械设计(Computer-aided industrial and mechanical design),有赖于该领域,大多数工作站和高端PC才可以售卖出去。第二是娱乐产业,尤其是电脑游戏,极大地推动相关硬件和软件的消费市场。由于微软在三维图形方面的很多动作都曝于公众目光之下,考察其对该技术的处理方法上便具有相当的启发意义。

技术背景

对一些专题进行更深入了解之前,需要先定义两个技术概念。

应用程序编程接口Application Programming Interfaces

首先是应用程序编程接口或者API的概念。API实际上是一些精短函数之集合,软件开发者可用来拼装成完整的程序。比如,三维图形的API可能包括绘制物体,光照效果模拟以及基于某视点物体的可见测试等函数。软件开发者便可以利用这些函数设计飞行模拟游戏,绘制透过驾驶舱盖看到的山峦和建筑,如果正被太阳照耀着,还可以给它们打上光照。

三维图形API的设计决定了可绘制的目标范围,绘制的效率,以及其易用性。所以API对软件开发者来说,在技术还是商业上,都有基础性的意义。

设备驱动程序Device Driver

其次是设备驱动程序的概念。设备驱动程序(简便起见直称驱动程序)是在指定硬件上实现了某一API的软件。例如,三维图形API的功能在康柏PC以及戴尔PC的显卡上各自都会有不同的实现。在这种情况下,两个硬件厂商会为各自的显卡撰写驱动程序来提供三维图形API。值得注意的是,在这两种不同类型的机器上,API会被以同一种方式使用,尽管它们的实现细节会有一定的差异。

驱动程序对API以及使用该API的应用程序的可行性是至为关键的。在特定机器上,驱动程序提供了某一API的支持。驱动程序的质量(完备性,性能,稳定性)在很大程度上决定了依赖其支持的软件的质量。驱动程序的开发和测试需要相当大的工作量,无论对负责开发的硬件厂商还是一般使用的软件开发人员和普通消费者,驱动程序都有重要的意义。

历史

三维图形的OpenGL 接口

1992年,形势很明朗,三维图形在多个市场上已成为关键技术。因独立软件厂商(independent software vendors ISV)们的呼吁,一些公司决定支持同一个三维图形API。这个新的API叫做OpenGL,其来源出自一个SGI先前开发也较普及的图形库。OpenGL在当时是一个相当先进的API,在很多机器上都能很好的实现。它的标准(specification)为一个委员会(Architecture Review BoardARB)控制,而不是受一个公司把持并服务其利益。

硬件厂商可以很容易地扩展该API以添加新的特性,这样可以促进应用程序的开发。ARB成立之初,成员包括DECIBMIntelMicrosoft以及SGI

其时,微软正在开发第一个版本的高端操作系统,Windows NT。由于Windows 3.1技术上的劣势,大部分计算机辅助设计的市场,微软是无缘置喙的,Windows NT就是利用来打开这一局面。Windows 3.1的劣势之一便是缺乏良好的三维图形的支持,OpenGL刚好可以填补这个空缺。

OpenGL驱动支持之弊

作为合作的一部分,微软与SGI Windows NT系统上实现了对OpenGL支持。对微软来说,这是一种全新的设备驱动方案,称为可安装客户驱动程序(Installable Client DriverICD)。

它不仅可以有更高的图形性能,也允许PC硬件厂商扩展OpenGL而提供更新的三维图形功能支持。这不同于传统的微软驱动模型,在传统的格局里,只能满足一般的图形性能要求,同时微软在驱动的设计以及所支持的API方面都有独断权。

然而,在PC方面(尤其是低价位PC),三维图形硬件的发展远不及微软和SGI的期望。一些PC硬件厂商(值得注意的比如DECIntergraph3DLab)对运行Windows NT的机器提供OpenGL驱动的支持,而针对低价位,大众化的消费市场(使用Windows 3.1Windows 95的用户群)的解决方案却迟迟没有出炉。1996年,三维图形硬件渐趋普及,要求有快速,且稳定的OpenGL实现方案的呼声日益高涨。压力之下,微软给出一个新的OpenGL设备驱动设计,称为迷你客户驱动程序(Mini Client Driver MCD)。MCD极大地减少为一大类PC图形卡开发一个合格OpenGL驱动所需时日,对它普及OpenGL的潜力不容小觑。

微软创建Direct3D接口

19951996年,微软订立一个计划,准备在运行Windows 95PC上推行游戏支持。目标就是把PC市场推向以往被游戏机厂商(比如NintendoSega)所占据的领域。微软决定不使用已在Windows NT上实现的OpenGL提供对游戏的三维图形支持。它收购了Rendermorphics公司,取得了其所有的RealityLab三维图形API,并对该API的设备驱动程序重新设计,宣布了另一个新的API,也就是Direct3D 立即模式(Direct3D Immediate-ModeDirect3D)。

Windows 95 提升Direct3D,冻结OpenGL

微软拒绝发布在Windows 95 上运行基于OpenGL游戏所需的软件。实际上,在相当一段时间内,微软在Windows 95上并不支持OpenGL,这样Windows NT上基于OpenGL的应用程序便不能在Windows 95上运行。同时,它也采取非常步骤取消了支持OpenGLMCD驱动方案,尽管它已向硬件开发者发布了开发包。结果,一些硬件厂商不得不取消已经处在测试阶段的OpenGL驱动。微软的举动分裂了3D图形市场,使得OpenGL在针对Windows 95的大众PC市场上份额愈见萎缩,相反,Direct3D却借Windows 95之力,一步步渗透进来。

在边缘化OpenGL的同时,微软市场团队开始向游戏及硬件开发产商和商业媒体推销自有的Direct3D API。如果微软提到OpenGL,说辞不外乎是性能低下的,只适合Windows NT上的某些CAD应用程序,而Direct3D却被吹嘘成是主流的,能够在大肆宣传的Windows 95上有实时的表现。(全然不顾OpenGL在一些高性能程序上的广泛应用,而这些程序与游戏的技术细节基本无二,例如飞行模拟器。)微软也增加了Direct3D开发人员的投入,OpenGL这边人员却被冻结,两相较之下,OpenGL的开发益趋缓慢。

API之争

SGI和其它OpenGL用户的业务有赖于它们能够提供革新的,高性能的图形技术。事实已经很清楚微软打算用Direct3D取代OpenGL,而Direct3D有很多技术弱点,同时由于其完全控制在微软手中,硬件厂商无法进行扩展。1996年在新奥尔良举办SIGGRAPH大会,SGI决定在该会上举行一场演示。演示结果确定无疑表明OpenGL至少不会比Direct3D慢,反驳了微软最为响亮的市场口号。既然OpenGL已经被很多人(包括微软)承认比Direct3D拥有更多的功能,更好的画质,这场演示也促发了图形学和游戏开发团体内的一场激烈争论,为什么微软要推动一个全新,低劣的API,而阻滞已存的能够使得其客户体验到更好产品的设备驱动技术?

游戏开发者要求OpenGL获与Direct3D同等之地位

随着一些技术与市场议题的披露,一番力挺OpenGL的回应开始了。id SoftwareJohn Carmack,很受欢迎的游戏Doom的开发者,公开声明拒绝使用Direct3D,而要用OpenGLChris Hecker19974-5月期的游戏开发者杂志(Game Developer magazine)上发表了有关两个API的详尽分析,结论以为微软应结束Direct3D,而把精力投向OpenGL

已经初露端倪微软不是要提供给客户技术更优的产品或者促进两个API的自由竞争,它是想用Direct3D来取得市场主导权,而把创新限制在不能对它挑战的领域。两份由游戏开发者发起的请愿书递交给了微软,一份来自56个顶级的游戏开发者,要求微软发布OpenGL MCD设备驱动以及其它已经完成,因不允许OpenGLDirect3D竞争而未发布的工作。另一份关于同一个主题,在开始阶段就收集254个签名,封合之时已经超过1400个,一些签名者的评论是相当有趣的。

微软的回复也就是重弹其关于市场定位的老调。Direct3D的定位是针对大众的,高性能的应用程序,而OpenGL诉求的只是高精确度的CAD程序云云。虽然请愿者明确要求两API有同等之地位,这样竞争才能激发起创新,而不至于一方独占图形硬件。微软仍旧提高了对Direct3D的投资,而OpenGL的预算进一步降低。就作者所识,微软并未有新闻公告确认存在这些请愿。

19988月之更新

本文原始稿写作之际,Jon Peddie Associates(译注:一家市场调研机构),就当下形势,发表了一篇中肯的评论。它有关微软的实力,弱项,行为的分析入木三分,至今还值得一读。

微软不断地更新Direct3D,每次新的修改都会吸收一些OpenGL的特性。这种重叠并没有完结。比如,Direct3D还不能处理曲面,它也不能支持带有几何加速硬件的图形卡。不过,相比一年以前,Direct3D的功能确实强多了,它的发展轨迹也开始与OpenGL日趋分离。

Fahrenheit

过去一年最重要的进展就是Fahrenheit项目。SGI即将问世的产品Visual PC的大部分软件将由微软提供,而其又担忧微软和HP共同宣布的DirectModel图形API,终于它站出来开始寻求和解之道。SGI,微软,IntelHP共同发起了一项代号为Fahrenheit的计划来开发三个新的API。其中两个与当前讨论主题无涉,第三个(Fahrenheit Low-Level, or FLL)却是被标榜为OpenGLDirect3D冲突的化解者。

什么是Fahrenheit Low-Level呢?这回估计也没人能知道,因为不存在关于该API的规格说明,而在某些方面看来,一些公开的论调是出奇的一致的。

下面来自SGI的原始新闻通告:

FLL脱胎于Direct3DDirectDraw OpenGL,它与为Direct3D撰写的硬件设备驱动及应用程序保持充分兼容,而在功能上与OpenGL大体相似。”

下面来自19988月微软开发者DirectX座谈会上(Microsoft Developer Network DirectX chat session):

Direct3D IM是目前看来与Fahrenheit LL最为相似的API。”

下面来自Microsoft's 1998 Meltdown Conference的幻灯片:

“向后兼容于DirectX 6以及当前版本的Direct3D接口和DDIDevice-Driver Interface,设备驱动接口)”

换句话说,这个新的Fahrenheit Low-Level无非就是Direct3D再加一些能够匹配OpenGL功能的额外特性。来自OpenGL威胁消除了,微软又得以继续以往的步调。

可以认为FLL是微软向其客户和合作伙伴释放的一个积极信号吗?毕竟现在只剩下一个API,减轻了硬件和软件开发者不小的负担,普通消费者也可以生活得更轻松。我当然是说不。现在这个API成为微软的一家之产。微软成为计算机图形产业重大创新的瓶颈。而且,不要忘了,整个冲突都是微软一手制造的。没有Direct3D,整个产业几年前就可以达到现在的水平,并有更多竞争的机会,而不会有如今Fahrenheit加予创新的限制。

OpenGL的状态

OpenGL依旧是微软全面控制之外剩下的唯一选择。它目前还是可行的,但是SGI不再以微软忌讳的方式来推进OpenGL,所以依然面临相当的风险。游戏开发者是比较有自己头脑的一群,一些该领域的重量级家伙依旧在使用OpenGL。正因为如此,硬件厂商也在改善对OpenGL的支持。目前,Direct3D还不能应付高端的图形硬件以及一些相当专业的软件。OpenGL还占据着这些领域。最后,一些开源组织(比如Mesa)也对各种类型机器提供OpenGL支持,不管它们是否使用微软的操作系统。

结论

对微软的追随者来说,三维图形是很有价值的学习案例。在这对新兴市场控制权的角逐中,微软始终一贯地:

l         获取或者改编现有的外来技术,而不是依靠自主创新。

l         拒绝回应独立软件开发伙伴的明了要求

l         通过市场渠道传递明显的错误信息,

l         运用Windows的市场垄断地位,提升自己的产品,打压其它来源的更优秀的产品。

l         作为核心软件供应商胁制异议者

l         扩大保持市场的控制地位,不惜牺牲商业伙伴及普通消费者的利益。

在相当程度上,这些策略已经显现效果。

微软总是暗示自己对消费者利益的维护,标准化的好处是完全抵得上微软一家独大,掌控消费者工作娱乐之用的计算机产品而付出的代价。然后,对三维图形这个例子,保护消费者利益而推行标准化绝不是微软的目标。一个优秀的标准产品已经存在,但是微软有计划地进行打压以确立自己的产品地位,赢得了先前并无影响的市场。微软这么做,也能够这么做,无非是因为其作为操作系统供应商压倒性的优势地位。结果是两年多前就可以提供给消费者的产品到现在才开始露面。而在其中,软硬件产品的开发成本,由于要支持两套竞争的标准又有大规模的增长。人为的割裂,把市场分为不兼容的消费级(Windows 95)和专业级水平(Windows NT)阻碍了三维图形应用软件的开发。

这难道不正是反托拉斯法案需要回应的情形吗? 

注:本文原已有中文译稿,微软和3D图形:关于遏止创新和竞争的个案研究,可参考。