1995年,微软发布了大名鼎鼎的操作系统Windows 95。
全新的图形化界面,即插即用的功能,便捷的操作,32位抢占式多任务系统,让Windows 95成为个人电脑历史上最重要的产品之一。
伴随着10亿美元的营销活动,Windows 95在全世界都引发了轰动,掀起了抢购的热潮。
但是,有一个群体一直在冷眼旁观,他们坚决不愿意把自己的软件移植到Windows95上。
他们就是游戏开发商,他们在前一年发布了无数经典的PC游戏:《Descent》、《DOOM II》、《Heretic》、《Jazz Jackrabbit》、《System Shock》、《UFO:未知敌人》和《魔兽世界:兽人与人类》,只不过,这些游戏统统运行在MS-DOS上。
为什么游戏厂商要抛弃Windows平台呢?
虽然MS-DOS只支持单任务,但是相比Windows它有个明显的优势:游戏开发者可以直接访问硬件(如显卡、键盘、鼠标、声卡等),游戏可以充分利用硬件的性能,创造出复杂的图形和声音效果。
而“可恶的”Windows,为了强调稳定性和多任务,竟然阻止游戏开发者直接访问硬件,必须通过Windows API才能访问,这一下子就拉低了游戏性能。
所以,很多游戏开发者对Windows望而却步。
当时的微软考虑到了游戏厂商的需求,也提供了一个叫做WinG的图形引擎,但这个引擎非常烂,迪斯尼用它开发了Windows版的《狮子王》,结果频繁蓝屏,愤怒的家长都快把迪斯尼的热线电话打爆了。
无数游戏玩家都在期待在Windows上玩游戏,但是他们都失望了。
Alex St. John决心改变这个状况,他认为:想让Windows成为主流,必须要围绕游戏构建,让人们玩起来。
自从加入微软开始,John就以反传统著名,他叛逆和傲慢多次激怒比尔盖茨,好几次差点儿把他解雇。
John在公司内找到了“臭味相投”的Craig Eisler和Eric Engstrom,三人的特点都是会公开蔑视那些不同意他们想法的同事,这种做派被很多同事讨厌。
三人组成了“野兽男孩”小组,开始了一个代号“曼哈顿”的项目,计划开发一个新的软件包,帮助游戏厂商充分利用Windows。
DOS不是能直接访问硬件吗?那用我这个软件包也能绕过操作系统,把Windows推到一边,清除所有与游戏争夺资源的垃圾,让游戏运行。
软件包许多功能会关闭 Win图形系统,让游戏可以与视频硬件直接对话:
阻止 Windows 将内存分页到硬盘,以便游戏可以以恒定的帧速率运行;
绕过 Windows 消息队列,以便您可以获得实时鼠标输入。
......
这样你就可以真正控制像 Doom 这样的第一人称射击游戏。
在 ATI 等显卡制造商的支持下,新的软件包很快就开发出来:
- DirectDraw:负责2D图形绘制。
- Direct3D:用于处理3D图形。
- DirectSound:用于处理声音。
- DirectInput:用于处理输入设备(如键盘、鼠标、游戏手柄等)。
- DirectPlay:用于处理网络多人游戏。
这些 API 背后的命名理念是允许游戏“直接”访问硬件,在游戏运行时尽量减少 Windows 操作系统的干扰。
当时有一位记者嘲笑了这种命名惯例,把它们称为“DirectX”。
John团队很喜欢这个名称,DirectX一直沿用至今。
因为项目代号“曼哈顿”,和多年前的核武器计划名称一样,最早的DirectX Logo 是这样的,有种核辐射的感觉。
微软拥有了DirectX,接下来就是吸引游戏厂商来使用它。
微软先盯上了id Software,这个只有10几个人的团队开发的《DOOM》在全球极其流行,安装量竟然超过了Windows,Bill Gates一度都想把它收购了。
微软联系了id Software的负责人,也是传奇程序员John Carmack,提出了一个他无法拒绝的条件:
由微软免费将DOS版本的《DOOM》和《DOOM II》移植到Windows,不用id Software出一分钱,将来游戏发行赚的钱也全部归id Software。
在微软的历史上,做出这样“卑微”的举动,是非常少见的。
既然John Carmack可以坐享其成,就把游戏的源码给了微软。
移植的工作由加布·纽维尔负责,这也是一位超级大牛,1996年离开微软后创办了Valve,开发了《半条命》,又领导了Steam平台的开发。
1996年8月20日,DOOM95正式发布,成为第一款DirectX游戏。
它不仅在Windows上运行效果出众,在多个方面都优于其原始的DOS版本,它能以“高达”640x480 的分辨率渲染游戏,支持 24 个音频通道,并通过图形用户界面简化了多人游戏设置。
微软把DOOM95作为宣传Windows的关键资料,比尔盖茨也参与其中,他录制了一段视频,穿着风衣,拿着猎枪,在DOOM的世界里一边开枪杀死各种怪物,一边推销Windows和DirectX。
微软的意思很明确:最牛的游戏都登录Windows平台了,你们在等什么呢?
(画质有点渣,找不到高清版,大家将就着看...)
但这个时候,大家对DirectX的评价并不高。
虽然DOOM移植成功,但John Carmack一直认为,DirectX是个糟糕的API,“它给使用它的程序员带来了巨大的痛苦和折磨,却没有带来任何显著的优势。”
大家更喜欢另外一个图形API,也是市场的霸主,OpenGL。
SGI在图形这一块的实力非常强悍,为了进一步占据市场,SGI把自己的图形API(IRIS GL)做成了开放标准,即OpenGL。
OpenGL有个架构评审委员会,ARB(Architecture Review Board),这里边包括IBM,Intel,Apple,ATI,Nvidia,Sun 等巨头。
有巨头撑腰,在整个90年代,OpenGL人气极盛,尤其是id Software使用 OpenGL 开发的的 Quake Engine ,达到了极为惊人的绘制效果。
这也激励着ATI、Nvidia等显卡制造商,必须完整地支持OpenGL,才能满足开发者和玩家的期望。
软件和硬件互相“激励”,达成了螺旋上升的正向循环,可以说是势不可挡。
这时候微软的DirectX杀了进来,它该如何破局呢?
快速迭代!
OpenGL是个开放标准,每次API标准的发展,都要受到到各个软硬件厂商的拉扯,大家为了自己的利益迟迟无法达成共识。
微软虽然也比较官僚,但仅仅需要与 ATI 以及 Nvidia 两家公司合作制定DirectX 的 API 规格,并且拥有最终的关键裁量权,可以快速迭代,快速发展。
就这样,DirectX虽然一直落后,但就像一个打不死的小强,韧性十足,一点点改进,终于赶了上来。
2001年发布的DirectX 8成了整个战役的转折点,这个版本引入了两个极为重要的创新:Vertex Shader(顶点着色器) 以及 Pixel Shader(像素着色器),赋予开发者在顶点和像素处理上的完全控制权,推动了 3D 游戏画质和性能的快速提升。
而DirectX 9 的推出,更是让微软取了决定性的胜利,大部分游戏开发者都开始使用DirectX。
到了2011年,就连John Carmack也认为:DirectX比OpenGL更好了。
虽然OpenGL在PC的竞争上落败,但是它的嵌入式版本Open GL ES却抓住了移动互联网的浪潮,被Android 和 iOS采用,随着手机的普及,成为历史上部署最广泛的 3D图形 API。(后来Apple另起炉灶,推出了自家的Metal,OpenGL ES也进化为Vulkan,那是另外一个故事了)。
在微软帝国的发展历史上,它多次利用操作系统的优势来击败竞争对手,Office之战、IDE/编译器之战、浏览器之战都是如此。
但是DirectX是微软少见的,主要靠自己一刀一枪打下江山的产品,它不但把游戏厂商从MS-DOS迁移到Windows平台,更是击败了霸主OpenGL,这是很难得的。
不过,由于微软错失了移动互联网,DirectX也主要用于Windows和XBox平台,没法扩展到手机端了。真是应了那句古话:世事难料啊!
全文完,觉得不错的话点个赞或者在看吧!
作者介绍:本文作者刘欣,著有畅销书《码农翻身》,《半小时漫画计算机》,前IBM架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。
- EOF -
1、Linux 内核“清洗”俄开发者?Linus 大佬亲自下场回复
伯乐在线
分享IT互联网职场和精选干货文章(原域名已不再维护)。组织维护10万+star的开源技术资源库,包括:Python, Java, C/C++, Go, JS, CSS, Node.js, PHP, .NET 等。
回复 资源 获取10万+star开源资源