完全剖析direct3d------第一章 Direct X基础

本文详细介绍了Microsoft DirectX API的作用,它为Windows操作系统下的多媒体硬件提供了高效的控制接口。DirectX允许开发者编写非硬件依赖的代码,实现最佳化软件。通过硬件抽象层(HAL)和硬件仿真层(HEL),DirectX支持硬件升级,实现性能提升。文章重点讨论了Direct3D API,包括其在DirectX中的角色、发展历史、以及与DirectDraw的关系。Direct3D提供3D图形硬件加速功能,广泛应用于游戏和仿真程序。此外,还介绍了DirectDraw、DirectMusic、DirectSound、DirectPlay和DirectInput等其他DirectX组件。文章强调了使用DirectX API时的关键概念,如COM对象、AddRef和Release方法,以及处理返回值的重要性。
摘要由CSDN通过智能技术生成

1. Direct X基础

Microsoft DirectX应用程序接口(API)发展的目的,是为了要提供一组接口,让执行Microsoft Windows操作系统的计算机能很有效地掌控多媒体硬件。DirectX让程序设计人员可以使用非常接近硬件内部处理指令和数据架构的方法,却不需要太过低阶到必须针对不同装置撰写不同的原始码。程序设计人员只要撰写非装置相依性的原始码,就可以开发出永远最佳化的软件-即使是使用者为了改善系统效能而增加了更好的3D图形加速卡、声卡、输入装置等等。

DirectX的设计理念是要让开发人员拥有一个类似MS-DOS效能的环境,而且速度远快于Windows-based程序代码,因为早期的Windows多媒体API包含了不必要的系统负担。然而,由于支持了所有可运用的硬件特性,DirectX的程序代码执行速度甚至比多数的MS-DOS应用程序还快。DirectX API是架构在一种可以忽略硬件装置依赖性的硬件抽象层(hardware abstraction layer HAL)上。也因为DirectX是针对未来的扩充性所设计,所以很多现有硬件还无法支持DirectX所定义的许多硬件加速支持特性。这种特性会由硬件仿真层(hardware emulation layerHEL)来模拟,如果当HEL无法支持时则予忽略。当某种能加速DirectX功能(例如进阶纹理)的装置出现时,您便可以用它来取代旧的装置,而您所开发的前瞻性软件就会立刻运用新装置所支持的加速特性。

当您针对某种装置建立一个DirectX对象时,DirectX会自动向硬件(也就是HAL)查询关于这个装置的信息。这些信息会填入一个叫特性位(cap bits)的表格中(特性位是功能位(capability bits)的缩写)。特性位中的信息可以用来决定某种特定动作是由硬件本身能执行或是要用HEL去模拟。

即使Microsoft提供了特性位让您可以决定硬件(HAL)中提供哪些特性或是哪些必须经由软件(HEL)仿真,您还是应该定义出一套能接受的最低系统组态,并且让您的程序代码最佳化,让程序在这种最低系统上也能尽可能有效率地执行。换句话说,非万不得已不去使用HEL,同时您应该在HEL的影响性最小的前提下去开发应用程序。如此就能利用目标系统上更强大的硬件支持的进阶功能,而不会迁就这种最低配备。这样就能在游戏中让那些拥有功能强大的系统玩家提供许多加强的功能,如进阶贴图、较复杂的多边形,或是动态光源等。不过您得确定在设计上必须尽可能地充分运用进阶的特性。记住,硬件的处理能力进步越来越快,同时游戏的狂热分子也会不停地更新他们的系统,如果您在设计软件时不向前思考,势必将失去可观的销售量。

DirectX API
 

DirectX API包含了数种API,这些API是设计来合并使用并协助您开发3D多媒体游戏及仿真(以及其它许多的非3D应用程序)。它提供功能的函式库来执行2D3D的成像;标准及3D音效、音乐、支持键盘、游戏杆,及其它的输入装置(包括力回馈硬件)、网络游戏。这些接口相互结合可以提供一组强大并整合的指令函式库,让您可以有效地创造出优越的游戏及仿真程序。

目前在DirectX中已提供的APIDirectDrawDirect3DDirectMusicDirectSoundDirectPlayDirectInput,以及DirectSetup。在本书及随书光盘的程序代码中,将会告诉您如何去整合其中的数种APIDirectDrawDirect3DDirectSoundDirectPlay,以及DirectInput-来完成一个焦点放在第一人称角度的3D游戏类应用程序。

DirectDraw
 

DirectDraw API提供显示装置的处理、点阵数据的控制、屏幕外内存,及快速存取其它硬件特性(如图块搬移、切换页)。它同时也是Direct3D的基本架构。 第三章 ,本书还会提到所有关于要建立一个Direct3D的应用程序时所必须了解的DirectDraw特性。您可以运用这里的原始码作为您所开发的3D游戏架构。如果您愿意,您也可以运用DirectDraw本身来开发2D游戏;然而这里不会描述如何用DirectDraw去开发2D游戏,因为本书的重点是在3D游戏上。

Direct3D
 

Direct3D是本书的重点,它是一种可以用3D图形及利用3D指令的硬件加速特性优点来撰写程序的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值