举例来说,以前在DOS系统下的骨灰级玩家玩游戏时,并不是安装上游戏就可以玩了,他们往往首先要设置声卡的品牌和型号,然后还要设置IRQ(中断)、I/O(输入与输出)、DMA(存取模式),如果有一项设置的不对,那么游戏就无法发出声音。这部分的设置不但让玩家伤透脑筋,对游戏开发者来说更是痛苦万分——为了让游戏能够在众多电脑中正确运行,开发者必须在游戏制作之初就把市面上所有声卡硬件数据都收集过来,然后根据不同的 API(应用编程接口)来编写不同的驱动程序。这对于游戏制作公司来说是一项很难完成的任务,所以在当时多媒体游戏很少。微软正是注意到了这个问题,为众多硬件厂家推出了一个共同的应用程序接口——DirectX,只要游戏是依照DirectX来开发的,使用的显卡、声卡的驱动程序也支持DirectX,不管显卡、声卡型号如何,不仅统统都能使用,而且还能发挥最佳的效果。
OpenGL:OpenGL[4](全写Open Graphics Library)定义了一个跨编程语言源^自·优尔·文.论,文'网]www.youerw.com、跨平台的编程接口的规格,它用于处理三维图象,二维图像当然也不在话下。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。
OpenGL是一个专业的图形程序接口的底层图形库,功能非常强大,调用也很方便。OpenGL 是行业领域中最为广泛接纳的2D/3D图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序,虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
很多著名的游戏引擎如Cocos系列正是基于OpenGL技术开发而成的。
OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。
OpenGL被设计为只有输出的,所以它只提供渲染功能,独立于视窗操作系统或其它操作系统的,亦是网络透明的。OpenGL的核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。
目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商和用户的认知程度并不高,未来的OpenGL发展前景迷茫。
1.3 DirectX简介
微软公司一直致力于使基于Windows 系统的计算机成为能够运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序的理想平台,Microsoft DirectX[3]技术的宗旨正是为微软公司实现这一目标而服务。
DirectX 包括安全和性能更新程序,以及许多涵盖所有技术的新功能,它提供了强大的DirectX API,以供应用程序访问这些新功能。
DirectX加强了3D图形和声音的效果,并提供了一个共同的硬件驱动标准供设计人员使用,让游戏开发人员跳过了为不同品牌的硬件来编写相应的驱动程序这一复杂的环节,也解决了用户安装设置硬件太过复杂的问题。
DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。
显示部分:显示部分是负责图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责2D图像加速,后者则主要负责3D效果的显示。DirectDraw包括很多方面:我们播放MPG、DVD电影、看图、玩小游戏等等都依赖于它,你可以简单地理解为所有画线的部分都是用的DDraw。Direct3D则是为3D效果服务的,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的Direct3D。