DirectX与OpenGL的发展历程

上传人:飞*** 文档编号:30958368 上传时间:2018-02-03 格式:DOCX 页数:19 大小:48.19KB
返回 下载 相关 举报
DirectX与OpenGL的发展历程_第1页
第1页 / 共19页
DirectX与OpenGL的发展历程_第2页
第2页 / 共19页
DirectX与OpenGL的发展历程_第3页
第3页 / 共19页
DirectX与OpenGL的发展历程_第4页
第4页 / 共19页
DirectX与OpenGL的发展历程_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《DirectX与OpenGL的发展历程》由会员分享,可在线阅读,更多相关《DirectX与OpenGL的发展历程(19页珍藏版)》请在金锄头文库上搜索。

1、goldegg2004-10-23, 17:22偶也来厚道的转贴。恩,我想说,你用什么顺手就用什么。goldegg2004-10-23, 17:24不论是哪一种类型的图形芯片,总会支持某个版本的 DirectX 或 OpenGL API,而支持哪一个 API 版本几乎成为图形产品分代的标志。我们有必要先明确 API 的概念,API 的全称是“Application Programming Interface”,意为应用程序接口,它是连接应用程序、操作系统和底层硬件的纽带。通俗点说,API 就是软件函数的集合,这些预先编写好的函数可以对硬件进行直接控制,它最大的优点就是通用性。3D 显卡刚刚诞生

2、时,并不存在支持何种 API的概念,如果某款游戏要运行在不同的显卡平台上,开发商就必须为每个类别的显卡编写一套程序,显然这意味着巨大的精力损耗,同时也无法获得令人满意的效果。因此早期显卡通常都有“游戏兼容性” 的说法,游戏产品同样也有“ 显卡兼容性” 的概念,这有点类似于上世纪 80 年代之前的专用计算机时代:每个硬件平台都必须使用专用的软件、不同厂商之间软硬件不具通用性。人们很早就意识到这个问题,对应的解决方案也被提出:制定一套操控硬件的图形函数库,图形芯片制造商和游戏开发商都严格遵循这套标准,这样,图形芯片制造商无需考虑什么游戏兼容的问题,它只要根据函数库提供的功能来开发产品就可以了;而游

3、戏开发商也不必为每款显卡都编程、只要直接调用这些标准化的函数库即可实现广泛的兼容性。这套函数库也就是所谓的图形 API。目前,我们可接触到的图形 API 可分为 OpenGL 和 DirectX 两大体系,前者是一项开放性的标准、主攻专业图形应用和 3D 游戏,由“OpenGL 架构委员会” 掌控,其成员包括业内各大厂商,目前主要推动标准发展的实际领导者是 3Dlabs。DirectX 则是微软制定的 API 标准,除了图形 API 功能外,它还包含音频 API 等功能,只不过其图形部分升级最快、也最为人所知。DirectX 针对的主要是娱乐应用,目前最新的 DirectX 9 API 功能极

4、为强劲,大部分新3D 游戏都基于 DirectX 9,而图形芯片制造商更是将它作为标准、竞相提供对 DirectX 9 的支持,是否支持 DirectX 9 也成为两代显卡的分水岭。对显卡来说,API 的重要性毋庸置疑,而未来每一次图形技术的重大进步都将与 API 紧密相关,关注 OpenGL 和 DirectX 这两种 API 无疑是非常必要的,从中我们可以了解它们的历史、现状和未来的发展,借机了解整个图形技术的发展状况。goldegg2004-10-23, 17:25定位专业应用的 OpenGLOpenGL 的英文全称是“Open Graphics Library”,意为“开放的图形程序接

5、口 ”。OpenGL 的历史可以追溯到上个世纪 90 年代初,标准诞生之后它一直占据主导地位。而微软的 DirectX出现的时间比 OpenGL 晚得多、功能也不及 OpenGL,只不过最近几年 OpenGL 因发展迟缓才被 DirectX 追上而已。尽管如此,OpenGL 仍然是高端图形 API 的代名词,制定中的OpenGL 2.0 以强劲的功能特性为业界瞩目,而显卡制造商对 OpenGL API 的重视程度并未缩减,在可预见的将来,OpenGL 还将引领专业图形和 3D 游戏的风潮。OpenGL 发展历程上个世纪 90 年代初,SGI 公司出于制造图形工作站产品的需要、开发出名为“IRI

6、SGL”的图形API 并成为工业标准。在当时,IRISGL 的功能可谓十分强大,但它的可移植性却相当之差。有鉴于此,SGI 决定在 IRISGL 基础上开发出一种功能类似、但可移植性更好的图形 API这就是 OpenGL。OpenGL 被打造为开放性标准,任何软硬件厂商均可自由使用,这让它受到广泛的欢迎。1992 年 7 月,SGI 正式发布 OpenGL 1.0 标准。OpenGL 1.0 完全实现了 SGI 的预期设计目标:功能强大、移植性良好并能自由使用。随后,SGI 发起成立了“OpenGL 架构委员会”(OpenGL Architecture Review Board,简称 ARB)

7、来共同管理和推广这项先进的标准,OpenGL 后继标准的制定权也逐渐转移给 ARB 组织。在 ARB 内部,产生新标准的过程非常民主化:各成员以投票的方式来决定新版 OpenGL 标准应具有的功能特性,并据投票结果制作正式标准文档,各软硬件厂商再根据这份标准文档的内容在自己的系统上实现;而所有的 OpenGL 版本都必须通过文档规定的全部测试项目方能生效。ARB 组织的成员都非泛泛之辈,目前其核心成员包括 SGI、3Dlabs 、Intel、IBM、 nVIDIA、ATi 、Microsoft、Apple 等业界领袖。OpenGL 1.0 获得意料之中的巨大成功,专业图形领域唯它马首是瞻。看到

8、这一点,微软甚为心动,当时它正在开发的 Windows NT 系统如果获得 OpenGL 的支持无疑会如虎添翼;而SGI 也希望能够让 OpenGL 广为流传。于是 SGI 和微软进行首次合作、联手将 OpenGL 1.0 移植到 Windows NT 平台。这项工作自然没有什么悬念,适用于 NT 的 OpenGL 1.0 顺利推出,这使得 Windows NT 系统成为图形工作站的又一个可选操作平台,很多运行于 UNIX 之下的专业图形软件也逐渐被移植,微软和 SGI 都如愿以偿。1995 年, SGI 推出了更为完善的 OpenGL 1.1 版本。OpenGL 1.1 的性能比 1.0 版

9、提高甚多,同时还加入了诸如顶点数组、顶点位置、新纹理等新特性,并增强了元文件对 OpenGL 的调用等等。OpenGL 1.1 同样获得了成功,而它也有对应的 Windows NT 版本。1997 年,受 3D 显卡的刺激,Windows 95 平台下开始涌现出大量的 3D 游戏,可微软自己的 Direct 3D 3.0 图形接口极为糟糕,idSoftware 公司的顶尖程序员 John Carmack(Quake 之父)嘲讽它简直就是“支离破碎的 API”。很自然,强大的 OpenGL 成为取代 DirectX 的最佳选择。但问题是微软虽然在 NT 系统中引入了 OpenGL,但其同时代的

10、Windows 95 却无法支持 OpenGL,面对这种局面,idSoftware 公司联合其它游戏开发商强烈要求微软在Windows 95 中也引入 OpenGL API,微软也很了解自己的 “Direct 3D 3.0”是什么货色、它很快就接受了这项建议。而后,id 公司开发出基于 OpenGL 的 Quake2,想必有过 3 年以上游戏玩龄的读者都会记得 Quake2 那无以伦比的 3D 场景和激烈刺激的竞技画面。而 OpenGL API因此立下大功,几乎所有游戏开发商都转向 OpenGL,微软后来也不得不顺应潮流、在Windows95 OSR2 版及 Windows 98 中正式支持

11、OpenGL,相关游戏开始大量涌现,而AutoCAD、3DS MAX、Maya 等许多专业 3D 设计软件也被移植到普通 PC 平台。今天,预算有限的设计者可以在 PC 中运行这些软件,莫不拜 OpenGL 所赐。1999 年, OpenGL 再度发生变革,但这次它遇到的是发展史上的重大危机:SGI 决定与微软联手开发下一代图形接口Ferihant。Ferihant 应用于 Windows 系统中,作为 OpenGL 和DirectX 的取代者。为此,Ferihant 将包含 DirectX 与 OpenGL 各自的优点,并加入场景贴图之类的高级功能。由于有了 Ferihant,SGI 停止了

12、原先的 Windows 版 OpenGL 开发计划,外界对此表示赞赏。然而 Ferihant 计划没进行多久,双方的合作就出现裂痕,微软不积极合作,光想把 SGI 的图形技术并入 DirectX 的做法令 SGI 非常不满,SGI 随后宣布中止合作并撤回所有的开发人员,Ferihant 遂告夭折。在这之后,OpenGL 和 DirectX 似乎互不相干,继续在 PC 平台上发展,但状况对比鲜明:DirectX 从此突飞猛进,而 OpenGL 却长期原地徘徊。2001 年 8 月,ARB 发布 OpenGL 1.3 规范,它增加了立方纹理贴图、纹理环境、多重采样、纹理框架压缩等扩展指令,但是改进

13、程度非常有限;2002 年 7 月,ARB 正式发布 OpenGL 1.4,它也只加入了深度纹理阴影纹理、顶点设计框架、自动纹理贴图等简单的功能,越来越落后于图形硬件技术的飞速发展。而此期间 DirectX 突飞猛进,DirectX 8 API 更是正式成为娱乐显卡的标准,id 公司所形容的“ 支离破碎的 DirectX”早已非吴下阿蒙,大量的 3D游戏转向了 DirectX 体系。OpenGL 落后于时代并非 ARB 组织技术不佳,根本症结在于确定 OpenGL 标准的民主机制:各成员通过投票表决。在实际操作中,这些成员往往基于自身利益而产生意见分歧,为了照顾多数人的利益 OpenGL 不得

14、不变得复杂臃肿、开发进度缓慢。我们可以看到,在OpenGL 1.0 之后的各个版本只是进行一些扩展指令集的升级,而它对显卡硬件中不断涌现出的先进特性熟视无睹,同为 ARB 成员之一的微软对此抱怨不已,后来它干脆彻底抛开OpenGL、将全部精力投到自家的 DirectX。大获成功的 DirectX 7、DirectX 8 就是在此种背景下出现的。2003 年的 7 月,ARB 公布 OpenGL 1.5 规范 这也是迄今为止最新的 OpenGL 版本。OpenGL 1.5 内包含 ARB 制定的“正式扩展规格绘制语言”( OpenGL Shading Language v1.0) ,该语言用于着

15、色对象、顶点着色、片断着色等扩展功能,同时也将作为下一代 OpenGL 2.0版本的内核。OpenGL 1.5 的变化还增加了顶点缓冲对象(可提高透视性能) 、非乘方纹理(可提高纹理内存的使用效率) 以及阴影功能、隐蔽查询功能等等。OpenGL 2.0:超强 API 现身从 ARB 的惯例来看,划时代的 OpenGL 2.0 很有可能在今年 7 到 8 月份现身。需要提及一点,OpenGL 2.0 的主导者不再是 SGI(SGI 忙于公司内部调整无暇他顾) 、而是著名的专业显卡提供商的 3Dlabs。为了一举改变 OpenGL 落后的状况,3Dlabs 协同其他 ARB 成员制定了雄心勃勃的

16、OpenGL 2.0 开发计划。据悉,OpenGL 2.0 将在 OpenGL 1.3 基础上进行修改扩充、但它将有下面五个方面的重大改进:复杂的核心被彻底精简;完全的硬件可编程能力;改进的内存管理机制、支持高级像素处理;扩展至数字媒体领域,使之跨越高端图形和多媒体范畴;支持嵌入式图形应用。为了在获得强大功能的同时保持理想的兼容性,OpenGL 2.0 将经历以下两个发展阶段:第一个阶段注重兼容能力和平滑过渡,为此,OpenGL 2.0 核心将在精简后的 OpenGL 1.3 功能模块的基础上加上可完全兼容的新功能共同组成(图 1) ,这种做法在满足兼容性的同时,还可将原有 OpenGL 中数量众多、且相互纠缠不清的扩展指令进行彻底精简。第一阶段的任务只是为了过渡,而第二阶段才是 OpenGL 2.0 的真正成熟期。此时,ARB 将合成出一个“纯 OpenGL 2.0”内核,纯内核将包含更多新增加的“ 精简型 API 函数” ,这些函数具有完全的可编程特性、结构简单高效、功能强大且应用灵活。除了完成这项任务外,ARB 组织还得

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号