来自当知百科
跳转到: 导航搜索
  

目录

概述

简介

  DirectX是一种应用程序接口(API)是计算机计算图形的一种规则,相当于一个通用编译器,就象街道中的十字路口,可以通往四面八方。同样,它也可以让各种适用于DirectX的游戏或者多媒体文件在各种型号的硬件上运行或播放。它可以让windows为平台的游戏或多媒体程序获得更高的执行效率,在这个规则中大量包含着现实实例的抽象集合,意味着它具有强大的灵活性和多态性。然而其抽象主要表现在参数的自定义和运算结构的随意组合,但其运算结构的坚固(独特/固定的运算规则)也使其具有很强的稳定性。

功用

  DirectX加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。

  举个例子,骨灰级玩家(玩游戏比较长的)以前在DOS下玩游戏时,可不像我们现在,安装上就可以玩了,他们往往首先要先设置声卡的品牌和型号,然后还要设置IRQ(中断)、I/O(输入与输出)、DMA(存取模式),如果哪项设置的不对,那么游戏声音就发不出来。这部分的设置不仅让玩家伤透脑筋,而且对游戏开发者来说就更头痛了,因为为了让游戏能够在众多电脑中正确运行,开发者必须在游戏制作之初,便需要把市面上所有声卡硬件数据都收集过来,然后根据不同的API(应用编程接口)来写不同的驱动程序,这对于游戏制作公司来说,是很难完成的,所以说在当时多媒体游戏很少。微软正是看到了这个问题,为众厂家推出了一个共同的应用程序接口——DirectX,只要这个游戏是依照Directx来开发的,不管你是什么显卡、声卡、统统都能玩,而且还能发挥更佳的效果。当然,前提是你的显卡、声卡的驱动程序也必须支持DirectX才行。

组成

  DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。

显示部分

  显示部分担任图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放mpg、DVD电影、看图、玩小游戏等等都是用的DDraw,你可以把它理解成所有划线的部分都是用的DDraw。后者则主要负责3D效果的显示,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的Direct3D。

声音部分

  声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。我们前面所举的声卡兼容的例子,就是利用了DirectSound来解决的。

输入部分

  输入部分DirectInput可以支持很多的游戏输入设备,它能够让这些设备充分发挥最佳状态和全部功能。除了键盘和鼠标之外还可以连接手柄、摇杆、模拟器等。

网络部分

  网络部分DirectPlay主要就是为了具有网络功能游戏而开发的,提供了多种连接方式,TCP/IP,IPX,Modem,串口等等,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保密措施。

分类

  DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有DirectGraphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、DirectSound、Direct Show、Direct Setup、Direct MediaObjects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX开发之初是为了弥补Windows3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接口。 DirectX是一组低级“应用程序编程接口 (API)”,可为 Windows 程序提供高性能的硬件加速多媒体支持。Windows 支持DirectX 8.0,它能增强计算机的多媒体功能。使用 DirectX 可访问显卡与声卡的功能,从而使程序可提供逼真的三维 (3D)图形与令人如醉如痴的音乐与声音效果。 DirectX使程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。该程序使得多媒体软件程序能够在基于 Windows 的具有DirectX 兼容硬件与驱动程序的计算机上运行,同时可确保多媒体程序能够充分利用高性能硬件。 DirectX 包含一组API,通过它能访问高性能硬件的高级功能,如三维图形加速芯片和声卡。这些 API 控制低级功能(其中包括二维 (2D)图形加速)、支持输入设备(如游戏杆、键盘和鼠标)并控制着混音及声音输出。构成 DirectX 的下列组件支持低级功能:Microsoft DirectDraw Microsoft DirectDraw API支持快速访问计算机视频适配器的加速硬件功能。它支持在所有视频适配器上显示图形的标准方法,并且使用加速驱动程序时可以更快更直接地访问。DirectDraw为程序(如游戏和二维图形程序包)以及 Windows系统组件(如数字视频编解码器)提供了一种独立于设备之外的方法来访问特定显示设备的功能,而不要求用户提供设备功能的其它信息。

  Microsoft Direct3D Microsoft Direct3D API (Direct3D):为大多数新视频适配器内置的 3-D 调色功能提供界面。Direct3D 是一种低级的 3-DAPI,它为软件程序提供一种独立于设备之外的方法以便与加速器硬件进行有效而强大的通信。Direct3D 包含专用 CPU指令集支持,从而可为新型计算机提供进一步加速支持。

  Microsoft DirectSound Microsoft DirectSound API:为程序和音频适配器的混音、声音播放和声音捕获功能之间提供了链接。DirectSound为多媒体软件程序提供低延迟混合、硬件加速以及直接访问声音设备等功能。维护与现有设备驱动程序的兼容性时提供该功能。

  Microsoft DirectMusic Microsoft DirectMusic API :是 DirectX的交互式音频组件。与捕获和播放数字声音样本的 DirectSound API 不同,DirectMusic处理数字音频以及基于消息的音乐数据,这些数据是通过声卡或其内置的软件合成器转换成数字音频的。DirectMusic API支持以“乐器数字界面 (MIDI)”格式进行输入,也支持压缩与未压缩的数字音频格式。DirectMusic为软件开发人员提供了创建令人陶醉的动态音轨的能力,以响应软件环境中的各种更改,而不只是用户直接输入更改。

  Microsoft DirectInput Microsoft DirectInput API:为游戏提供高级输入功能并能处理游戏杆以及包括鼠标、键盘和强力反馈游戏控制器在内的其它相关设备的输入。

  Microsoft DirectPlay Microsoft DirectPlay API:支持通过调制解调器、Internet 或局域网连接游戏。DirectPlay简化了对通信服务的访问,并提供了一种能够使游戏彼此通信的方法而不受协议或联机服务的限制。DirectPlay提供了多种游说服务,可简化多媒体播放器游戏的初始化,同时还支持可靠的通信协议以确保重要游戏数据在网络上不会丢失。DirectPlay8.0的新功能即支持通过网络进行语音通信,从而可大大提高基于多媒体播放器小组的游戏的娱乐性,同时该组件还通过提供与玩游戏的其他人对话的功能而使团体游戏更具魅力。

  Microsoft DirectShow Microsoft DirectShow API: 提供了可在您的计算机与Internet 服务器上进行高品质捕获与回放多媒体文件的功能。DirectShow 支持各种音频与视频格式,包括“高级流式格式(ASF)”、“音频-视频交错 (AVI)”、“数字视频 (DV)”、“动画专家组 (MPEG)”、“MPEG 音频层 3(MP3)”、 “Windows 媒体音频/视频 (WMA/WMV)”以及 WAV 文件。DirectShow 还具有视频捕获、DVD回放、视频编辑与混合、硬件加速视频解码以及调谐广播模拟与数字电视信号等功能。

如何学习DirectX

  如何来学习它呢?

  Direct身为一种运算规则,其自身的运行环境必然是有严格规定的,也就是说Direct是独为Windows服务的一种规则。有一句李白的诗写的非常好,那它的表达环境就是在中文中。而非英文。所以要想理解Direct并且灵活运用,而并非仅仅理解这句话的构成,而是要彻底剖析中文的语言规律,也就是Windows的运行原理,Windows自身输入输出的方式。在这个基础上要理解Direct这个规则自然是水到渠成。

  那是不是说就不用去研究Direct了?

  并非如此,但是在了解根本原理的基础上去观察Direct代码上的结构会很轻松。这里要说的就是Direct自身很强大但学习起来并非很难,难在于原理的研究,不仅要看智商,更主要还要有耐心,几千页的原理并不是一年半载能看完的。研究完这些,至于语法上的规则那就不值一提了。

  Direct最好从基础原理开始研究,然而原理却如此之复杂,难道Direct没法去学了?

  这句话也不对。当有一个新事物来到你面前时,你要从两个方面开始研究,一个是表面现象,也就是Direct的语言的规则与使用习惯、方法等。另一方面就是从已知条件中去推倒出这个现象。意思是要从原理和代码两方面入手,从代码入手时记住了代码的习惯。紧接着了解这一点原理帮助自己去记忆,也能很快理解是怎么回事。也就是说我们虽然不赞同背代码,但也不能一点不记,我们虽然很赞同从原理入手,但从实际考虑,还是希望各位能量力而行。

  整体来讲学Direct还是要有一定编程基础的,不建议一上来就学Direct,Direct毕竟是一个比较高深的东西。还是建议您对C++、Dos等一些语言比较精通的时候再回头研究Direct。否则会很难。

  当然也不是不可能,例如3Ds Max就是基于Direct的。做个模型、图像、动画还是可以的。当然也要看你从什么角度去学习了。

DirectX 的历史

DirectX 1.0

  第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其流行的最大障碍。

  DirectX1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。这时候的DirectX不包括现在所有的3D功能,还处于一个初级阶段。

DirectX 2.0

  DirectX 2.0在二维图形方面做了些改进,增加了一些动态效果,采用了Direct 3D的技术。这样DirectX2.0与DirectX 1.0有了相当大的不同。在DirectX2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX2.0开始,整个DirectX的设计架构雏形就已基本完成。

DirectX 3.0

  DirectX3.0的推出是在1997年最后一个版本的Windows95发布后不久,此时3D游戏开始深入人心,DirectX也逐渐得到软硬件厂商的认可。97年时应用程序接口标准共有三个,分别是专业的OpenGL接口,微软的DirectXD接口和3DFX公司的Glide接口。而那时的3DFX公司是最为强大的显卡制造商,它的Glide接口自然也受到最广泛的应用,但随着3DFX公司的没落,Voodoo显卡的衰败,Glide接口才逐渐消失了。

  DirectX 3.0是DirectX 2.0的简单升级版,它对DirectX2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX3.0集成了较简单的3D效果,还不是很成熟。

DirectX 5.0

  微软公司并没有推出DirectX 4.0,而是直接推出了DirectX5.0。此版本对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,还加入了S3的纹理压缩技术。

  同时,DirectX5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。

DirectX 6.0

  DirectX6.0推出时,其最大的竞争对手之一Glide,已逐步走向了没落,而DirectX则得到了大多数厂商的认可。DirectX6.0中加入了双线性过滤、三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐走入成熟阶段。

DirectX 7.0

  DirectX7.0最大的特色就是支持T&L,中文名称是“坐标转换和光源”。3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。虽然OpenGL中已有相关技术,但此前从未在民用级硬件中出现。

  在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显示卡的GPU来计算,这样就可以把CPU从繁忙的劳动中解脱出来。换句话说,拥有T&L显示卡,使用DirectX7.0,即使没有高速的CPU,同样能流畅的跑3D游戏。

DirectX 8.0

  DirectX 8.0的推出引发了一场显卡革命,它首次引入了“像素渲染”概念,同时具备像素渲染引擎(PixelShader)与顶点渲染引擎(VertexShader),反映在特效上就是动态光影效果。同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。这意味着程序员可通过它们实现3D场景构建的难度大大降低。通过VS和PS的渲染,可以很容易的营造出真实的水面动态波纹光影效果。此时DirectX的权威地位终于建成。

DirectX 9.0

  2002年底,微软发布DirectX9.0。DirectX9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。

  PS2.0具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。

  VS2.0通过增加Vertex程序的灵活性,显著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

  增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

  DirectX9.0c

  与过去的DirectX 9.0b和Shader Model 2.0相比较,DirectX9.0c最大的改进,便是引入了对Shader Model 3.0(包括Pixel Shader 3.0 和Vertex Shader3.0两个着色语言规范)的全面支持。举例来说,DirectX 9.0b的Shader Model 2.0所支持的VertexShader最大指令数仅为256个,Pixel Shader最大指令数更是只有96个。而在最新的Shader Model3.0中,Vertex Shader和Pixel Shader的最大指令数都大幅上升至65535个,全新的动态程序流控制、位移贴图、多渲染目标(MRT)、次表面散射 Subsurface scattering、柔和阴影 Softshadows、环境和地面阴影 Environmental and ground shadows、全局照明 (Globalillumination)等新技术特性,使得GeForce 6、GeForce7系列以及RadeonX1000系列立刻为新一代游戏以及具备无比真实感、幻想般的复杂的数字世界和逼真的角色在影视品质的环境中活动提供强大动力。

  因此DirectX 9.0c和Shader Model3.0标准的推出,可以说是DirectX发展历程中的重要转折点。在DirectX 9.0c中,Shader Model3.0除了取消指令数限制和加入位移贴图等新特性之外,更多的特性都是在解决游戏的执行效率和品质上下功夫,Shader Model3.0诞生之后,人们对待游戏的态度也开始从过去单纯地追求速度,转变到游戏画质和运行速度两者兼顾。因此Shader Model3.0对游戏产业的影响可谓深远。

Directx 10.0

  已经包含在Windows Vista操作系统中,目前无法单独下载使用

  新的DirectX使你获得更好的图像显示质量,使多人游戏具可伸缩性,以及包括更棒的音频效果。它强化了针对DirectDraw和Direct3D的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的3-D角色和环境;点光源式光影和像素式光影使图象更逼真;强化了DirectSound和DirectMusic,简化了其应用扩展;DLS2音频合成功能提高了乐器音频的真实感;DirectInput的设备影射功能令对设备的支持更简单;DirectPlay使多人游戏的性能和可扩展性得到了提高;DirectPlay提供了IP声音通讯;DirectShow的应用编程接口提供了音频/视频的实时合成和即时编辑;DirectShow支持Windows媒体音频和视频(WMA和WMV)的读写; MicrosoftTV技术可以支持数字电视节目。当然,最重要的是一些新游戏需要它。 DirectXRedist通常每两个月更新一次,包含了DirectX Runtimes的所有更新,可以替代此前发布的旧版本,适合WindowsXP、Server 2003、Vista等操作系统,不支持Windows9x/2000。一般最新的3D游戏等应用程序都需要新的DirectX接口,因此强烈推荐更新,

  Vista DX10用户也同样需要。

  显卡所支持的DirectX版本已成为评价显卡性能的标准,从显卡支持什么版本的DirectX,用户就可以分辨出显卡的性能高低,从而选择出适合于自己的显卡产品。

  现在不下载DirectX的最新版本后果很严重!可以点击下面的链接可以连接到目前最新的DirectX下载页(2008年6月更新)

  http://www.microsoft.com/downloads/details.aspx?familyid=822640AB-0983-4C41-9C70-632F6F42C557&displaylang=zh-cn

  DirectX10.1

  正如以前的DX版本一样,DX10.1也是DX10的超集,因此它将支持DirectX10的所有功能,同时它将支持更多的功能,提供更高的性能。

  DX10.1的一个主要提高是改善的shader资源存取功能,在多样本AA时,在读取样本时有更好的控制能力。除此之外,DX10.1还将可以创建定制的下行采样滤波器。

  DX10.1还将有更新的浮点混合功能,对于渲染目标更有针对性,对于渲染目标混合将有新的格式,渲染目标可以实现独立的各自混合。阴影功能一直是游戏的重要特效,Direct3D10.1 的阴影滤波功能也将有所提高,从而可望进一步提高画质。

  在性能方面,DirectX 10.1将支持多核系统有更高的性能。而在渲染,反射和散射时,Direct3D10.1将减少对API的调用次数,从而将获得不错的性能提升。

  其他方面,DX10.1的提高也不少,包括32bit浮点滤波,可以提高渲染精确度,改善HDR渲染的画质。完全的抗锯齿应用程序控制也将是DX10.1的亮点,应用程序将可以控制多重采样和超级采样的使用,并选择在特定场景出现的采样模板。DX10.1将至少需要单像素四采样。

  DX10.1还将引入更新的驱动模型,WDDM 2.1。与DX10的WDDM2.0相比,2.1有一些显著的提高。

  首先是更多的内容转换功能,WDDM2.0支持处理一个命令或三角形后进行内容转换,而WDDM2.1则可以让内容转换即时进行。由于GPU同时要并行处理多个线程,因此内容转换的即时性不仅可以保证转换质量,还可以提升GPU效率,减少等待时间。另外,由于WDDM2.1支持基于过程的虚拟内存分配,处理GPU和驱动页面错误的方式也更为成熟。

  微软预计将在两周之内(2008年7月中旬)宣布新一代API:DirectX11。消息来源指出,微软将在7月22日举办的Gamefest 2008上宣布新一代API,此前我们得到有关DirectX11的最新消息是NVIDIA将在八月末的“NVISION 08”会议上讲解DirectX 11。

  由微软举办的Gamefest 2008大会将于7月22-23日在西雅图召开,Gamefest2008大会是微软每年一度的游戏技术探讨盛会,所以有关下一代游戏技术接口API的消息自然也是少不了的话题。

  DirectX11引入最大新技术特征无疑是Tessellation/Displacement,我们还听说了多线程渲染、ComputeShaders也将是DirectX 11中重要环节,另外据说DirectX 11还将引入Shader Model5.0,具体细节信息目前基本上还是一无所知,RayTracing(光线跟踪)与Rasterization(光栅化)技术的支持也还没有提及。

  至于DirectX 11何时正式推出,微软一直没有给出确切的消息,此前的传言声称会在今年底明年初完成,可能会随着WindowsVista SP2或Windows 7一同登场,而在DX11之前,DX10.1将成为最后一次小幅更新。

Directx 11

  2009年1月9日星期五,微软将面向公众发布Windows 7客户端Beta1测试版。而此前一天,即1月8日,微软将率先发布Windows 7服务器版本的Beta 1测试版。

  Windows 7是微软的下一代操作系统,当前业内普遍认为,微软将在今年圣诞购物旺季前发布Windows 7正式版。

  在微软刚刚发布的Windows 7 Beta版本中,一些已经安装使用的用户的发现了DirectX11已经包含其中了。DirectX 11作为3D图形接口,不仅支持未来的DX11硬件,还向下兼容当前的DirectX10和10.1硬件。DirectX11增加了新的计算shader技术,可以允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。

  在微软刚刚发布的Windows 7 Beta版本中,已包含DirectX 11

  另外,DirectX11还支持tessellation镶嵌化技术,这有助于开发人员创建更为细腻流畅的模型,实现高质量实时渲染和预渲染场景。多线程是DirectX11的另外一大亮点,DX11可以更好地利用多线程资源,从而使游戏更有效地利用多核处理器。

打开DirectX加速的方法

  [1]有时候重装系统后发现很多3D游戏都不能运行,只有一些传统2D平面游戏还能勉强运行,而且速度很慢。这并不是因为Windows2003不支持3D游戏,而是系统设置的问题。

  解决方法:首先请确保以正确的方式安装好显卡驱动,然后就要打开DirectX加速。DirectX加速是3D游戏最基本的需要,为了使Windows更为单一地面向服务器平台应用,微软默认将其加速功能关闭。即便是在安装了最新的DirectX10.0之后也不会自动打开加速功能,而必须手动设置。在“开始”→“运行”对话框中输入“dxdiag”以打开DirectX诊断工具。随后在显示一栏中将DirectDraw、Direct3D、AGP纹理加速功能启用。如此一来,WindowsServer 2003便能运行各种3D游戏。除此以外,Windows Server2003还默认关闭了硬件加速,可以在显示属性的高级菜单中将其设置为完全加速。[2]

个人工具
名字空间

变换
查看
操作
导航
工具箱