DirectX
与
射击标靶OpenGL
DirectX是一种Windows系统的应用程序接口(简称API),它可以让以Windows为作业平台的游戏或多媒体程序获得更高的执行效率,还可以加强3D图形成像和丰富的声音效果,并提供设计人员一个共同的硬件驱动标准。 Microsoft DirectX提供了一套非常好用的应用程序接口,其中包含了设计高性能、实时应用的程序代码,为「DirectX SDK」(俗称「DirectX开发包」)。此技术能够帮助我们轻易地建构计算机游戏和多媒体的应用程序,其中包括了DirectDraw、DirectSound、DirectPlay、Direct3D和DirectInput等部分的API指令及媒体相关的组件。这些组件每一个都有特定的用途。
DirectDraw是最为重要的一个,因为所有的图形都要用到它,它是2D图形的引擎,3D图形也同样离不开它。在Windows操作系统这种保护模式之下,所有图形的接口动作都必须经
过GDI这个图形处理中心来处理,而不能直接对硬设备下命令 。图形设备接口(Grahpics?Device?Interfacedirectdraw),它是负责在屏幕上显示图形所用的接口。GDI吴寿山由百余个函数所组成的。GDI函数必须通过设备描述表(简称DC)的句柄来控制绘图。
DirectDraw主要的工作是用来帮助Windows的应用程序能够直接进行硬设备的操作,还可以加速显示卡的速度,使得游戏的画面呈现起来更加地流畅。发动机支撑架DirectDraw支持CPU的MMX、3DNow及AGP等特殊的指令技术,还可以处理多屏幕的显示,让Windows环境下运行的游戏更加地多姿多采。
其它的组件是:
DirectSound:提供硬件和软件的声音混合与回放。
DirectMusic:处理基于消息的音乐数据。它支持乐器数字接口(MIDI)并为创建交互式音乐提供创作工具。
DirectPlay:使得通过调制解调器链接或通过网络来与应用程序相连成为可能。
Direct3D:是一个三维图形包,它提供一个高级的保留模式(Retained Mode)接口,这使得你能够实现一个完整的三维图形系统。它还包含一个低级的即时模式(Immediate Mo
玻璃钢套管
de)接口,使得应用程序获得对渲染管线的完全控制。
DirectInput:为包括游戏杆、鼠标、键盘和游戏控制器在内的输入设备提供支持。它还为反馈游戏设备提供支持。
DirectSetup:为DirectX提供了一个简单的安装过程。它简化了更新显示和音频驱动程序的过程,并且确保没有硬件或软件冲突的存在。
AutoPlay:让你能够制作一张一旦插入驱动器就能自动安装的光盘。AutoPlay并非DirectX所独有,因为它是Microsoft Win32 API的一部分。
而组件对象模型(COM)是DirectX的基础,COM接口是DirectX技术的基础,没有COM就没有背光喷码机DirectX。
DirectX的大多数API都是基于COM结构的。COM为软件模块化和软件重用提供了最坚实的基础,它的最重要的概念就是接口(interface),接口是软件重用的最基本方法。更专业的说,接口是一系列操作的规范描述,即接口规范。
所有的COM接口都是从Iunknown接口继承而来的,IUnknown接口是所有COM接口的根。
IUnknown接口具有3个方法:
QueryInterface():此方法查询新接口,并在新接口存在时返回之。
AddRef():此方法在接口或其它应用程序连编到此COM对象上时将引用计数值递加1。
Release():此方法将COM对象的引用计数递减1。当引用计数递减到0时,该COM对象自动释放。
所有COM对象都具有这三个方法。虽然DirectX应用程序一般不需要考虑引用计数的问题,但引用计数确实是存在的,它已经由DirectX自动完成了。我们所要做的,就是创建DirectX对象,然后在使用完毕后调用Release方法释放引用。
OpenGL即是Open Graphics Libraries的缩写,它是一套「计算器三维图形」处理函式库,由于它是由各家显示厂商所共同定义的共通函式库,所以它也是绘图成像的工业标准。
_^7R/N?_|)D_\8u ]_w ~ |
Q_NOpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进
行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于 OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等 3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。