游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10322|回复: 35

微软和3D图形---关于遏止创新和竞争的个案研究

[复制链接]

14

主题

251

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2005-5-13 15:14:00 | 显示全部楼层 |阅读模式
转载:微软和3D图形:关于遏止创新和竞争的个案研究

微软和3D图形:关于遏止创新和竞争的个案研究
作者:Alan Akin

翻译:Win Herry

日期:2005-5-2

译者按:Direct3D 和OpenGL之争从开始到现在将近十年。微软依然是巍巍帝国,Silicon Graphics依然在产业界举足轻重。而OpenGL推出了2.0,DirectX已经推出了9.0,Direct3D和DirectDraw合二唯一,并为DirectGraphics。作为没有经历或者关注过那段历史的人,今天再去回顾一下,或多或少都会有些感触。这就是我翻译这篇文章的目的。英文原文见“收藏->Others”目录。
前言

  这篇文章的初始版本写于1997年7月。这次重写集中于紧跟前言的前几段,但也是非常小的改动,以提高连续性,并更新超联接。如果你对原版很熟悉,你完全可以直接跳到1998年8月的更新,否则请继续读下面的引言。


引言

  在过去的五年中,三维计算机图形学成为PC 世界中一项至关重要的技术。3D图形功能是两大市场的先决条件:计算机辅助工业/机械设计(当今大部分工作站和高档PC都销往这个市场)和娱乐(尤其是计算机游戏,促使消费者去购买重要的PC新软硬件)。研究微软在3D图形技术上的态度是非常有启发性的,因为微软在这一领域的许多动作都已暴露于众目之下。


技术背景

  为了能够细致地理解问题,我们必须先定义两个概念。

  应用程序接口(Application Programming Interface)

  首先是API (Application Programming Interface)的概念。本质上讲,一个API就是一个存放小型程序的库,软件开发者将这些小型程序凑在一起,形成一个完整的计算机程序。例如,一个 3D图形API可能包括:绘制对象的函数,模拟光效的函数,以及决定一定视角下哪个物体是可见的函数。一个软件开发者可以使用这些函数来建立一个个飞行模拟游戏:绘制出山和建筑物(通过飞机的坐仓天蓬可能会看到这些),然后调整亮度以达到太阳照射的效果。

  3D图形API的设计决定了可以画什么,以多快的速度画,以及软件开发者达到某一效果的方便程度。因此,从技术和商业角度讲,对于软件开发者来说, API都具有非常重要的作用。

  设备驱动程序(Device Driver)

  第二个概念是设备驱动程序。设备驱动程序(简称驱动程序)是在给定硬件设备上实现一个API 的软件。例如,在Compaq PC视频卡上实现的一个3D图形API可能会不同于在Dell PC上的实现。在这种情况下,两个硬件供应商(Compaq和Dell)将在他们各自的视频卡上为3D图形API书写驱动程序。注意:在两个机器上, API将以同样的方式使用,只是他们的实现细节(驱动程序)不同了。

  API 和所有使用这些API的应用程序能否生存关键在于驱动程序。驱动程序的存在与否决定了能否在特定机器上能否获得特定的API。驱动程序的质量(完整性,性能,可靠性)在很大程度上决定了使用了它的软件的质量。驱动程序的开发和测试需要大量的努力,因此,对于提供它的硬件供应商和使用的它的软件开发者和消费者来说,驱动程序都很重要。


历史

  3D图形API:OpenGL

  到1992 年,很明显3D图形技术必将成为许多市场的关键技术。独立软件供应商的需求导致了一个由众多公司组成的联盟的成立。联盟同意支持一个通用的3D图形 API。这一新的AIP被命名为OpenGL,它继承自由Silicon Graphics创建的一个流行的、古老的图形库。OpenGL是一个“达到最新技术发展水平”(state-of-the-art)的API,它可以在很多计算机上有效地实现。OpenGL的规范由有一个叫Architecture Review Board(ARB)的委员会控制,而不是有一个商业机构控制,同时它也是非赢利的。任何硬件供应商都可以非常容易地扩展OpenGL来包容富有创意的新特性,这使得新应用得以快速发展。ARB最初的成员有:数字设备公司(Digital Equipment Corporation),IBM,Intel,微软和Silicon Graphics。

  也是在那个时候,微软正在开发它的新的高端操作系统Windows NT的第一个版本。由于Windows 3.1在技术上的缺陷,微软无法介入CAD的很大一部分市场。微软希望能够在Windows NT中扭转这一局面。确点之一是缺乏好的3D图形支持,而OpenGL提供了一个有利的解决方案。

  OpenGL的驱动程序支持问题

  作为一个联合工程项目的一部分,微软和Silicon Graphics生产了一个Windows NT的OpenGL实现。这个实现的特点之一是设备驱动程序的设计对于微软来讲是全新的,被称作可安装客户端驱动程序(Installable Client-side Driver, ICD)。ICD提供更高的图形性能,并且允许任何PC硬件供应商扩展OpenGL API来支持新的、富有创意的3D图形功能。这与微软一贯的驱动程序模型形成鲜明对比。微软一贯的驱动程序模型非常适合更普通的图形性能需求。并且在那种模型下,微软保留了对驱动程序以及它支持的API的设计的绝对控制。

  针对PC (尤其是低价PC)的3D图形硬件市场的发展比微软和Silicon Graphics预计的要慢的多。少量的PC硬件供应商(特别是数字设备公司,Intergraph,和3D实验室)为运行Windows NT的机器提供了功能强大的OpenGL驱动程序。但是针对Windows3.1和Windows95用户的低价、高容量解决方案却迟迟没有推出。 1996年,当3D图形硬件变的更普遍时,提供快速,稳定的OpenGL实现的压力增大。微软开发了一种新的OpenGL设备驱动程序设计,叫做瘦客户端驱动程序(Mini Client Driver,MCD)。对于一大类PC图形卡来讲,MCD在很大程度上减少了开发优质OpenGL实现所需要的时间。因此,MCD有大幅增加 OpenGL实用性的潜力。

  微软创建Direct3D API

  1995年和1996年,微软设立了一个新的计划来支持在Windows95操作系统下运行游戏。目标是将PC市场扩展到一直由任天堂和世嘉等控制台游戏一统天下的领域。

  微软没有选择已经在Windows NT上实现的OpenGL技术来为游戏处理3D图形。相反,它收购了Rendermorphics,Ltd.,并获得了它的3D图形API—— RealityLab。微软在RealityLab的基础上重新设计设备驱动程序方案,并宣布完成一个新的3D图形API,叫做Direct3D直接模式(Direct3D)。

  利用Windows95推动Direct3D并冻结OpenGL

  微软拒绝发布Windows95 环境下支持基于OpenGL游戏所需要的软件。实际上,在相当长的时间内,微软根本没有在Windows95上支持OpenGL,这使得 WindowsNT的用户无法在Windows95上运行相应的OpenGL应用程序。同时微软也采取非同寻常的措施来限制对MCD驱动程序的支持,尽管它已经向硬件开发者发布了工具。结果,一些硬件开发商无奈地招回了已经处于beta测试阶段的OpenGL驱动程序。微软的行动分割了3D图形市场,注定了OpenGL在Windows95的目标市场——High-volume PC不会被广泛使用。同时,微软通过Windows95推进了Direct 3D的市场渗透。

  微软的商业团队开始向游戏开发者,硬件开发者,和商业新闻界推广私有的Direct3D API,同时开始将OpenGL边缘化。当微软提及OpenGL时,都会说那是一种仅仅适合于WindowsNT上特定专业CAD应用的、低性能API;而Direct3D才是主流,并且能够在被大肆宣传过的Windows95上提供“实时”性能。(这并不影响OpenGL在与游戏相近的技术中的广泛应用,例如飞行模拟器)微软同时保证增加Direct3D的研发人员,而保持OpenGL的研发人员数量。这导致OpenGL的发展相对于Direct3D 来说慢了下来。


API之战

  Silicon Graphics和许多其他OpenGL的用户的业务依赖于提供创新的,高性能的图形技术的能力。因为微软打算利用Direct3D取代OpenGL的形势逐渐明朗,并且Direct3D有许多技术上的缺陷,而且它也不象OpenGL那样允许硬件供应商扩展(因为它完全被微软控制),所以Silicon Graphics决定在1996年在新奥尔良市(New Orleans)举行的SIGGRAPH(Special Interest Group on Computer Graphics)会议上作一个演示。这个演示最终证明OpenGL至少和Direct3D一样快,从而驳倒了微软最关键的市场口号。因为OpenGL早已被公认(微软除外)比Direct3D有更多的功能和潜在的更高的图象质量,这个演示在计算机图形学和游戏开发社群掀起了一场激烈的争论:为什么微软要推出一个新的,差劲的API?为什么微软要扼杀已经存在的、可以使用户使用升级产品的设备驱动程序技术?

  大部分公开讨论发生在comp.graphics.api.opengl和rec.games.programmerUs USNET新闻组,并且可以通过http://www.dejanews.com访问。(如果你打算研究它们,应该做好大量阅读的准备!想象一下在comp.graphics.api.opengl始于1996年8月的新闻组里查找 “DirectX vs OpenGL”。)


游戏开发者呼吁OpenGL和Direct3D平等竞争

  当技术和市场问题逐渐暴露的时候,一股强劲的支持OpenGL的反击开始了。id Software(流行游戏Doom的开发者)的John Carmack公开表示他将拒绝使用Direct3D而使用OpenGL。Chris Hecker在1997年4-5月份出版的《游戏开发者杂志》(Game Developer magazine)发表了对两个API的全面分析,总结道:微软应该无条件放弃Direct3D,并将精力投放到OpenGL上去。

  事实开始证明微软的目的并不是为消费者提供一个在技术上很出色的产品,或者促进API 之间的自由竞争,而是正在利用Direct3D来达到控制市场的目的,并在那些可能对微软产生挑战的领域限制创新。游戏开发者向微软提交了两个请愿书。第一个来自于56名顶级游戏开发者。他们要求微软发布已经完成,但由于可能会使OpenGL与Direct3D竞争而没有发布的OpenGL MCD设备驱动程序和其他产品。第二封公开信同样是关于这个话题。刚开始时,这封公开信征集到了254个签名,而到结束时,签名数已经超过了1400个。有些签名所附带的评论非常有趣。

  微软的回应是重申它一早的市场定位:Direct3D 面向通用(high-volume)、高性能应用,而OpenGL只面向高精度的CAD应用。尽管请愿者明确表示他们希望两个API能够处于平等地位,以使竞争刺激创新,并保证不会有任何一个独立的机构控制对图形硬件的访问。微软对此的回应是增加对Direct3D的投资,并继续削减对OpenGL的投资。据本文作者所知,微软从来没有发布任何新闻公告承认收到过这两个请愿书。


1998年8月的更新

  差不多在我写本文的初始版本之时,Jon Peddie Associates发表了一篇令人信服的社论,总结了当时的情形。它关于微软实力、弱点和行为的评价,即使今天读起来也非常有价值。

  微软继续升级Direct3D,并且每次升级都从OpenGL中吸取一些新的特性。但是它对OpenGL的覆盖仍然没有结束;例如,Direct3D仍然缺少处理曲线平面的能力,同时它也不支持具有几何加速硬件的图形卡。然而,Direct3D比一年以前强多了。并且它的演化开始与OpenGL的演化产生分歧。


Fahrenheit

  在过去一年最重大的进步是Fahrenheit 项目。Silicon Graphics选择了通过协商进行妥协。Silicon Graphics即将推出的虚拟机产品所需要的软件,以及那些与微软和惠普发布的直接模式图形API所存在的技术问题有关的软件都要依赖于微软(dependent on Microsoft for most of the software required by its upcoming Visual PC product and concerned about technical problems with the Direct Model graphics API announced by Microsoft and Hewlett-Packard)。Silicon Graphics,微软,Intel和惠普发起了一个叫做Fahrenheit的联合项目。此项目要创建三种新的API。其中的两种API和本文的主题无关,而第三种(Fahrenheit Low-Level,FLL)通常被吹捧为OpenGL和Direct3D冲突的解决方案。

  什么是Fahrenheit Low-Level API?现在没有人知道FLL会是什么,因为不存在任何规范。但是关于FLL的公开声明在一些方面非常一致。Silicon Graphics' original press release:

  FLL自Direct3D,DirectDraw和OpenGL演化而来。为基于微软Direct3D的应用程序和硬件驱动程序提供全面的向后兼容,同时为Silicon Graphics的OpenGL技术提供功能性兼容。

1998年8月 Microsoft Developer Network DirectX chat session:
Direct3D IM是当今与FLL兼容最好的API。

slides presented at Microsoft's 1998 Meltdown Conference:
与DirectX6(当前版本)Direct3D……API和DDI(Device-Driver Interface)向后兼容。

  换句话说,新的FLL API只是简单地将Direct3D附加上一些OpenGL里的功能特性特性。来自OpenGL的威胁得以压制,微软可以继续它惯常的商业步伐。

  可以把Fahrenheit 看成是微软向消费者和合作伙伴发出的友好信号吗?毕竟现在将只有一个API,这会缓解硬件和软件开发者所承担的压力,并简化消费者的生活。我认为答案是否定的。新API完全归微软所有。在计算机图形产业界,微软现在成了所有重大革新的瓶颈。另外,必须要记住的是所有冲突都是微软挑起的:没有 Direct3D,这个产业在几年前就应该发展到今天这个地步,同时将会有大量竞争的机会,而没有今天Fahrenheit所表现出的对革新的限制。


OpenGL的现状

  OpenGL 仍然是微软完全控制的3D图形之外唯一真正的选择。尽管Silicon Graphics不再使用任何微软无法接受的方式来推广OpenGL,但是OpenGL仍然能够生存。所以它现在的处境非常的危险。游戏开发者是具有独立思想的一个群体,一些举足轻重的游戏开发者仍然在使用OpenGL。结果,硬件供应商正努力提高对OpenGL的支持。Direct3D还无法处理高端图形硬件和大部分专业应用;OpenGL占据着那一小部分地盘。终于,开源组织(尤其是Mesa项目)开始为任何类型的计算机提供OpenGL支持,不管他们有没有使用微软的操作系统。


总结

  对于研究微软的人来说,3D图形是一个有价值的案例。在这场控制新兴市场的战役中,微软一贯如此:

    * 从其他机构学习或者修改技术,而不是自己创造它自己的技术。

    * 利用它的市场地位散播明显错误的信息。

    * 拒绝对它的独立软件开发伙伴的直接请求作出回应。

    * 利用Windows的垄断地位推广它自己的产品,而遏止其他来源已经发布的优秀产品。

    * 利用他核心软件供应商的地位排除异己。

    * 不遗余力地扩展或者维护它对市场的控制,甚至不惜牺牲商业伙伴和消费者的利益。


  在很大程度上讲,这些战术已经成功。

  微软经常暗示它只为消费者提供好处;相对于它强制执行的标准,让微软完全控制消费者工作和娱乐所使用的计算机产品是值得的。在这个案例中,为了消费者的利益而推行标准化并不是微软的目标;一个优秀的标准已经存在,但微软却有步骤,有计划地压制它,以使它在一个以前从来没有涉及过的新兴市场里建立自己的产品并获得统治地位。微软这样做过,并且可以这么做,只是因为微软作为操作系统供应商具有绝对的垄断地位。结果,本应该两年前消费者就应该享受到的产品特性,直到现在才普及。期间,硬件供应商和软件供应商为了处理两个竞争的标准,其产品开发费用都大幅增加。3D图形应用软件开发被人为的市场分割所限制,形成了“消费品”(Windows95)和“专业产品”(WindowsNT)两个互不兼容的部分。

  这不正是反托拉斯诉讼适用的情形吗?

Allen Akin是加利福尼亚Palo Alto的一个独立软件开发者。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-5-13 19:35:00 | 显示全部楼层

Re:转载:微软和3D图形---关于遏止创新和竞争的个案研究


偏颇。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-15 01:50:00 | 显示全部楼层

Re:转载:微软和3D图形---关于遏止创新和竞争的个案研究

楼上请说明哪点偏颇?
从1998年我开始接触D3D和OpenGL开始.所有的事情基本如作者所叙述.
Fahrenheit 是MS退出ARB前和SGI合作的一个项目,当时据说要全面取代GL/D3D.形成一个统一的API. OpenGL那段时间没有任何长足的进步.版本一直是1.3. 1.4.1.5(到2003年).而Fahrenheit这个项目不知什么原因没有发布.而后就是MS退出ARB. Direct 9.0发布. OpenGL发奋图强终于在2004年SIGGRAPH后推出2.0.并把很多新的特性带入了标准.

MS在Win95/NT4.0的时候,没有任何可用的3D标准.唯一可以选择的就是OpenGL.当年的GameSDK 基本不能用,这就是为什么当年会有Alloge(不知道是不是这么写的)用的比GameSDK多的多.

如果经历过98年前的开发,大家都会记得DX6里的Retain Mode的D3D和DX7.0 D3D. 对这两个API.相信大家会有一个公正的评价. 我没用过Win95.只用过98和NT 4.0 . 不知道Win95下可不可以安装GL 的Driver(比如glide -> GL).但是NT4.0下是确实可以用GL的。我当年的Q3就是装在NT4.0 workstation下的.

不可否认 D3D现在很好用,而且甚至在一段时间内超过了OpenGL. 但是有一点是确定的. 在DX9发布以前.D3D一直在学习GL并千方百计排挤GL的市场. D3D从7.0变的勉强可以用,到DX9.0超越OpenGL1.5,我们看到了D3D在进步.看到了两个API在竞争,这是好事情. 但是如果这个世界只剩下一个D3D,绝对是件坏事情.我宁愿只剩下一个OpenGL. 一个开发的标准总比一个封闭的标准好的多.


    * 从其他机构学习或者修改技术,而不是自己创造它自己的技术。

    * 利用它的市场地位散播明显错误的信息。

    * 拒绝对它的独立软件开发伙伴的直接请求作出回应。

    * 利用Windows的垄断地位推广它自己的产品,而遏止其他来源已经发布的优秀产品。

    * 利用他核心软件供应商的地位排除异己。

    * 不遗余力地扩展或者维护它对市场的控制,甚至不惜牺牲商业伙伴和消费者的利益。
这招不光是在3D API上.在编译器和开发环境上也是如此.
倒在这些战术上的公司多的却了.Borland Lotus 何曾不是这样从鼎盛走向衰落的.

MS是个成功的公司。当世界上只有MS的软件的时候,世界就乱了。

OpenGL现在相对D3D来说在 MS 平台上可以说没任何优势.无论是兼容性还是速度(据说在长角里,MS把GL driver 放到了user mode里,速度肯定是慢不少了。但是绝对不是GL本身的问题). 但是GL有一个D3D永远比不了的特性就是Open.任何地方可以用.Mesa是个很优秀的GL实现. 随时随地可以让你在任何平台上运行GL(没有frame buffer和显示设备的机器上都可以).Linux BSD 各种Unix PS2(PS3据说也会采用GLES) 甚至Mobile的设备都可以支持GL.
所以结论: 仅仅在Windows下,我会选择D3D做我的渲染器,但是绝对不应该放弃GL.不过话说回来.一个游戏或者一个3D应用里,真正和3DAPI相关的又有多少呢? 我觉得,除非MS有能力把Windows做的Unix稳定和性能高. 不然GL就没有死的可能.同理.只要MS 还在D3D就不会不发展.

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-15 02:10:00 | 显示全部楼层

Re:转载:微软和3D图形---关于遏止创新和竞争的个案研究

我好象跑题了。楼主说的MS的竞争手段..不过这点好象地球人都知道.
MS 毒辣三招: 参见李维的borland传奇,有些出入但是大概是这样.
第一招:学,你的东西比我好,我就模仿你.
第二招:拼,拼放血,东西没你有市场我就和你拼价格
第三招:挖:还弄不死你,就挖你的人.(据说前两招弄不死borland,结果老比亲自把安德斯给挖走了,就是做Delphi C#的那个).

不过我觉得最厉害的还是那捆绑, 由操作系统捆绑其他产品.很快就能把其他厂商搞死. IE 就是一个例子.虽然IE发展到现在已经很好了.但是个人更喜欢用Mozilla 和 Firefox. 而Mozilla /firefox是有浓重的Netscape血统的.(PS: Moziila里有个对有些人很有用的功能IE一直没有.就是几乎可以任意放大字体.这对我这些不爱戴眼睛的人来说太有用,躺的远远的就可以看屏幕上的字).

现在MS的VS很好用了. DX也很好用了。 DShow也做的很好了。盼望MS能把VSS再做好一些.最好能赶上CVS. 用过VSS和CVS那真叫什么是差距啊.


PS: 介绍一下Free的开发工具:别在MS一棵树上吊死
      1:  KDevelop / Anjuta  不错的IDE,都有code complete功能.但是可能Windows用户不习惯.
      2: IBM Eclips . 一个Java的开发环境,+ CDT插件就可以开发C++程序.我没用过。但是别人说不错.
  3: C++BuilderX 个人版本.免费的,我一般用它调试.
  4: Gabas(可能是GamBas) 一个 free的VB IDE.玩过几天.挺有意思的
  5: GCC/GDB就不用我介绍了吧?
  6: Kylix3 OpenEdition.几乎可以把一个delphi程序不做修改就移植过来.

  我现在的配置是 CBX + Anjuta .

以上的这些够搭建一个完整的开发平台了。外加 Maya XSI GIMP(PS应该是个原生的Mac软件)等软件.开发游戏完全够了。
而开发的库Open的就更多了。DevIL OpenAL avifile libXML (xercesc)等等。

呵呵.离开MS我照样还能活.只是活的可能没那么舒服而已.
     

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-5-16 19:14:00 | 显示全部楼层

Re:微软和3D图形---关于遏止创新和竞争的个案研究

Anjuta很好的
kdevelop我搞了半天搞不出来
我一直用free的工具,看到人家拿着盗版的开发工具跟我吹我就头晕,呵呵

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-16 23:27:00 | 显示全部楼层

Re:微软和3D图形---关于遏止创新和竞争的个案研究

Anjuta的话最好去下一个中文的补丁,我是从utsc下的.能支持中文。但是支持的不是特别好.我现在只用它做编译器.

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-16 23:31:00 | 显示全部楼层

Re:微软和3D图形---关于遏止创新和竞争的个案研究

我不喜欢过于封闭的东西.
比如DX.完全就是跟着MS走.只有选择MS才能使用DX.感觉没什么意思.

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2005-5-17 01:24:00 | 显示全部楼层

Re:微软和3D图形---关于遏止创新和竞争的个案研究

其实也不是很喜欢MS的东西...又大,又慢.一坨一坨的...但是却是比较漂亮...顺手了..也懒得换了....

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-17 10:18:00 | 显示全部楼层

Re:微软和3D图形---关于遏止创新和竞争的个案研究

楼上的,你错了。
Linux下的图形界面也可以弄的很漂亮的。而且你想怎么弄就怎么弄。。
只是很多人都比较顺手Windows下的东西而已。

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-5-17 10:19:00 | 显示全部楼层

Re: Re:微软和3D图形---关于遏止创新和竞争的个案研究

其实也不是很喜欢MS的东西...又大,又慢.一坨一坨的...但是却是比较漂亮...顺手了..也懒得换了....

又大,又慢.一坨一坨 : 太形象了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-25 16:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表