1、什么是DirectX Q?
微Y的DirectX软g开发工具包QSDKQ提供了一套优U的应用程序编E接口(APIsQ,q个~程接口可以提供l你开发高质量、实时的应用E序所需要的各种资源。DirectX技术的出现极大的有助于发展下一代多媒体应用E序和电脑游戏?/p> ȝ说来Q用DirectX的主要有两个好处Q?、ؓ软g开发者提供硬件无x;2、ؓg开发提供策略? 1、ؓ软g开发者提供硬件无x?/p> 微Y开发DirectXQ其最主要的目的之一是促q在Windows操作pȝ上的游戏和多媒体应用E序的发展。在DirectX出现以前Q主要的? 戏开发^台是MS-DOSQ游戏开发者们Z使他们的E序能够适应各种各样的硬件设备而绞脑汁。自从有了DirectXQ游戏开发者们便可以获益于 Windowsq_的设备无x,而又不失ȝ接访问硬件的Ҏ。DirectX主要的目的就是提供象MS-DOS一Lz的讉Kg的能力,来实现ƈ? 提高ZMS-DOSq_应用软g的运行效果,q且Z人电脑硬件的革新扫除障碍?/p> 另一斚wQ微软公司开发DirectX是ؓ了在当前或今后的计算机操作系l上提供l基于Windowsq_的应用程序以高表现力、实时的讉Kg? 能力。DirectX在硬件设备和应用E序之间提供了一套完整一致的接口Q以减小在安装和配置时的复杂E度Qƈ且可以最大限度的利用g的优UҎ。通过 使用DirectX所提供的接口,软g开发者可以尽情的利用g所可能带来的高性能Q而不用烦g那些复杂而又多变的硬件执行细节?/p> 一个高表现力的ZWindowsq_的游戏将得益于以下几U技术: 专ؓ提高囑Şq算及快速反应能力而设计的加速卡QAccelerator cardsQ? 2、ؓg开发提供策?/p> DirectX的另外一个重要的目的是给g厂商提供开发策略,他们可以从高性能E序的开发者和独立的硬件供应商Qindependent hardware vendors IHVsQ那里得到反馈。所以,在DirectX E序员参考书中有时可能会提供那些q不存在的硬件加速设备的技术细节。在很多时候,软g可以模拟q些Ҏ,在另外一些情况下QY件根据硬件的指标判断出其 Ҏ,q且可以忽略那些gq不支持的性能?/p> 已经和将要实现的昄讑֤的特性包括: 覆盖(Overlays)Q由于它的被支持Q在囑Ş讑֤接口中,H口中的换页Qpage flippingQ将成ؓ可用。换|用来在整个屏q上昄画面的双~冲Qdouble-bufferQ方案? 标准2兆显C内存,q在3D游戏中是最需求? 要被包括的声音讑֤的新Ҏ包括: g及其外设可以提供I间环绕立体声效果?
2、DirectX的组?/p> DirectX SDK为基于Windowsq_的应用程序提供了以下几个lg? DirectDraw Q通过直接讉K昄g来提供高U的图象处理能力? -------------------------------------------------------------------------------- 3、关于DirectDraw DirectDraw是DirectX SDK大家族中的一员,也是其中最主要的一个部件。DirectDraw允许E序员直接的操作昑֭、硬件位图映以及硬件覆盖和换页技术。它在提供这些功 能的同时Q也使其与现在的ZMicrosoft Windows的应用程序和讑֤驱动E序相兼宏V? DirectDraw是一个Y件接口,它在提供直接讉K昄讑֤的同Ӟ与Windows囑Ş讑֤接口QGDIQ相兼容。DirectDraw不是 一个高层的囑ŞE序~程接口Q它为游戏和Windows子系lYӞ例如Q?D囑Ş包和数字视频~码Q提供了一U与讑֤无关的途径Q以获得讉K特定的显C? 讑֤的某些高U特性的能力?/p> DirectDraw适用于种cM多的的显C备,从简单的SVGA昄器到提供裁剪、羃放、和支持非RGB颜色格式的高U硬件实现设备。设计这? 的接口是Z让你的应用程序能够列举低层硬件的能力Qƈ且对那些支持的硬件加速特性加以利用。那些在g讑֤中不能实现的Ҏ,DirectX仿真出 来? DirectDraw提供了以下几个优点,q些好处在以前只有那些专为特定显C备所写的软g才能利用? 支持双缓冲和换页囑Ş DirectDrawl运行于Windows 95和Windows NT 4.0或更高版本的计算机提供了一个高性能的的游戏图象引擎?
4、ؓ什么要使用DirectDraw? 无庸|疑Qh们之所以利用DirectDraw来开发各U游戏以及多媒体应用软gQ是因ؓDirectDraw可以Z们的应用E序带来许多强大的功能提升?/p> DirectDraw可以充分评估视频g的能力,只要可能Q它׃对其某一Ҏ加以利用。例如,如果你的昑֍支持gBlitQ?
DirectDraw׃位图映这一操作分派l显卡来完成Q极大的提升q行速度。此外,当某g不支持某特性时QDirectDrawq提供了g
仿真层(HELQ以完成q项操作?
5、DirectX 5.0的新Ҏ?/p>
首先QDirectDraw支持Windows98和Windows NT 5.0的多昄器系l。例如,在多昄器环境下Q同一台电脑用两套不同的昄讑֤和显C器Q用户可以将不同的画面显C在两个昄屏幕上,甚至一个窗? 从一个显C器拖拽到另一个显C器上。DirectDraw5.0支持q样一个系l,允许应用E序在这L环境中直接的讉K和操U늡件加速特性?/p> 其次QDirectDraw已经使视频端口(Video-portQ具有新的性能Q它允许应用E序直接控制数据从一个硬件视频端口流向一个位于显存中的DirectDraw面上。这P使得视频图象的输入和输出对DirectDraw来说都变得极Z利和快速?/p> 除此之外QDirectDraw的HELQ硬件仿真层Q现在可以充分利用Pentium MMX处理器所带来的多媒体性能的提升。当你第一ơ创建页面的时候,DirectDraw会测试你的电脑芯片是否支持MMX。而在一台非Pentium MMXU别电脑上,q个试会在调试E序的时候给Z个良性的异常信息Q而这个异常ƈ不会影响C的应用程序执行的E_性?/p> DirectDraw接口现在q支持离屏页面的宽度大于主页面的宽度。你可以创徏q些面而不用顾及它的大,而在以前的版本中Q你l常会ؓ了不佉K面宽度大于主面而将其分割开来?/p> DirectDraw接口现在已经能够支持高囑Ş端口QAGPQ构架。在装备了AGP昑֍的系l中QDirectDrawE序开发者将从AGP昑֍的大定w和高传输速率中获益?/p>
6、部件对象模型(COMQ?/p> DirectX是基于COM的一套Y件编E接口?/p> 部g对象模型QComponent Object Model, COMQ是OLE 的基。COM 为OLE提供了编E模型和二进制标准。COM定义q实C软部Ӟ如应用程序、数据对象、控件及服务Q机Ӟq把它们l称为“对象”。每个Y部g对象由数 据以及访问数据的函数l成Q访问Y部g对象数据的函数的集合UCؓ“接口”?/p> 从这里可以看出,COM 的设计与C++c非常相|即一个Y部g对象h一个内部数据结构和一l外部接口函敎ͼ允许通过接口函数Ҏ据进行访问。因此Microsoft公司把根 据COM执行的对象统UCؓWindows对象。但Windows对象与C++中的对象有明昄差别QWindows对象中没有公共数据,也没有成员函敎ͼ 因此不能直接讉K数据Q也是说数据是全封装的?/p> 对象的提供者或服务器必L明一个或多个接口的定义,每个接口都是怺兌的一l函敎ͼ执行对象的一个特性。每个对象的一个用P或称为“客户”) 必须拥有一个接口指针才能访问对象。当客户有了q个指针后,可以用这个对象而无需知道对象的含义,即客户q行在不同的q程、不同的机器、不同的操作 pȝ、由不同的Y件开发而用不同的语言Q或者版本不同?/p> DirectX SDK接口被创建在COM~程层次表中很基的一层。每一个代表设备的对象的接口,比如IDirectDraw、IDirectSound、和 IDirectPlayQ是直接从IUnknown OLE接口中派生下来的。这些基本对象的创徏被操作于在该对象的动态连接库中,要比用Win32中专门用来创建COM对象? CoCreateInstance函数要好得多? 特别的是QDirectX SDK对象模型为每一个设备提供一个主要的对象。其它的讑֤对象是由q个主要对象z下来的。例如,DirectDraw对象代表昄讑֤。你可以用它? 创徏代表昑֭的主面QDirectDrawSurfaceQ对象,和代表硬件调色板的调色板QDirectDrawPaletteQ对象;怼的, DirectSound对象代表声卡Qƈ且创建DirectSoundbuffer对象来代表声卡上的声x据?/p> |