当前位置:编程学习 > VC++ >>

(Visual C++)游戏开发笔记二十六 DirectX 11各组件的介绍&第一个DirectX 11 Demo的创建

 

 

一、DirectX11的现有组件

DirectX的API被分为颇多组件,每一组件都展现了系统不同方面的功能。其中的每一套API都能被独立的使用,因此我们可以按照所需有选择地自由添加我们游戏中需要的功能。在最新版本的DirectX中,不少组件迎来了更新,如Direct3D。其他的组件保持着现有的功能,当然,也有一些被弃用的组件面临着被移除的命运。值得一提的是,DirectX中的各个内部组件可以独立进行新功能的升级。

 

下面进行分别介绍:

1.Direct2D
Direct2D用于Win32应用程序中2D图形的绘制。Direct2D善于高性能矢量图形的渲染

2. DirectWrite

DirectWrite用于Direct2D应用程序中的字体和文字渲染。

3 . DXGI

DXGI(DirectX Graphics Infrastructure)即DirectX图形基础,用于
Direct3D交换链(swap chains)和枚举设备适配器(enumeration of deviceadapters)的创建。

4 .Direct3D
Direct3D用于DirectX中所有的与3D图形相关的操作。Direct3D可谓DirectX中的大牌级API,受到了微软最多的关怀与多次针对性的更新,它也最多被世人所熟知。这个专栏后续内容的大部分的篇幅将集中于讲解Direct3D上。
5. XAudio2

XAudio2 是一款底层的音频处理API,以前为XDK(Xbox Development Kit)的一部分,目前,隶属于DIRECTXSDK。XAudio2替换了DirectSound。初始版本的XAudio用于的第一代Xbox游戏机。

6. XACT3

XACT3是一款建立在XAudio2之上的更高级别的音频处理API。XACT3允许开发者在他们的应用中使用跨平台音频创作工具。若开发者希望从底层控制音频系统或者希望创建自己的类型于XACT3的更高级别的音频系统,可以运用XAdio2来完成各项功能。XACT3,我们已经在附录B中讨论过,作为“DIRECTX中的声音”从配套网站,是一款非常容易上手的游戏音频制作工具

7. XInput
XInput是XDK和DirectX SDK的负责输入功能的 API,用于处理Xbox 360控制器输入。基本上任何可以在Xbox 360上可以使用的命令,都可以在PC上使用,而XInput就是帮助我们在这些设备上进行输入相关操作的API。这些设备不仅包含Xbox手柄,也包含了其他很多设备。需要说明的是,XInput 替换了之前版本的DirectInput

    注:XAudio是只能用于Xbox游戏机的音效API。 XAudio2,其继任者,可用于Xbox游戏机和基于Windows的PC。
8 . XNAMath

新出现的XNA Math 不是一款API,而是是一个数学库,进行电子游戏中常见运算的优化工作。XNA Math采用了SIMD (Single Instruction Multiple Data单指令多数据)来执行多个操作的单指令调用。XNA Math库适用于基于Windows的PC以及Xbox 360。相关内容我们将在后续内容继续讲解。

注:XNA GameStudio为一款基于DirectX的游戏开发工具,可供我们使用C#和.NET编程语言来为Xbox360与Windows PC平台编写游戏。而XNA Math是一款DirectX SDK中数学库的名字,可独立于XNA Game Studio单独使用。我们使用XNA Math不必下载XNA Game Studio SDK。

9 . DirectCompute
DirectCompute是一款DIRECTX 11中新加入的API,作用为支持GPU的通用多线程计算(general purpose multi threading computing)。GPU具有并行处理多任务的能力,如物理,视频压缩与视频解压,音频处理等。并非所有的任务都适合GPU来完成,但是对于这些,由GPU来完成的可能性是巨大的(but for those that are, the possibilities are tremendous)。想了解DirectCompute的更多信息,可以查阅相关资料。

10. DirectSetup

当我们完成游戏开发的时候,我们理所当然地需要把完成品呈现给用户。DirectSetup给我们提供了在用户的电脑上安装最新版本的DirectX的功能。DirectSetup也具有检查已经安装了的DirectX版本号的功能。
11.Windows Games Explorer
WindowsGames Explorer(游戏资源管理器)是Windows Vista与Windows 7中的新特性,可供游戏开发者在他们的操作系统上展示(测试)他们的游戏。比如游戏的显示,标题,评级,描述,特定区域的风格框,评分内容(如M为易做图,T为青少年等),游戏数据统计和通知,家长控制等。DirectX SDK中提供了大量如何使用自己的游戏的游戏资源管理器的教程,这对于发行一款游戏是非常有用的。下面的图1是浅墨电脑上的Windows7游戏资源管理器的界面截图
 

\

图1  Windows 7中游戏资源管理器的示例
12. DirectInput
DirectInput是一款侦测键盘、鼠标和操作杆输入的API。目前Xinput用于所有的游戏控制器。对于键盘和鼠标我们可以使用Win32函数或者使用DirectInput,后续内容将对DirectInput展开讲解。根据DirectX SDK,DirectInput将继续保留目前的形式,直到它被新的技术所取代。

二、已过时DirectX组件

开门见山吧,下面这些组件已经过气,或者已被DirectX SDK移除:

 

1 . DirectDraw
DirectDraw曾经用于2D图形的渲染,目前我们可以运用Direct2D或者Direct3D来进行2D图形的绘制。在DirectX 8中,DirectDraw与Direct3D进行了合并,并改名为DirectX Graphics。

注:在早期版本的DIRECTX中,2D图形绘制功能由DirectDraw完成。因为DirectDraw不再被更新,我们最好在Direct3D和Direct2D中完成图形的绘制。

2 . DirectPlay

DirectPlay用于网络游戏的网络功能配置,基于UDP(UserDatagram Protocol)协议,并担任更高级别的抽象层网络通信。目前这款API被移除于DIRECTX SDK之外,以便于PC与Xbox360平台上Windows Live中游戏的更好的整合。

3. DirectShow
DirectShow是一款用于多媒体渲染和录音的API。DirectShow能够播放常见的视频文件,并提供DVD视频导航菜单等功能。当前DirectShow为Windows SDK的一部分,而不再隶属于DirectX SDK。此外,Windows Vista与Windows 7用户可以使用的微软媒体中心(Microsoft’s MediaFoundations),也是Windows SDK的一部分。在电子游戏中,若需要显示切换CG的场景与视频文件, DirectShow也可以派上用场。
4. DirectMusic
作用为在应用程序中播放音频内容的DirectMusic ,在DirectX 7及后续版本中被移除。DirectMusic提供了与底层音频与硬件沟通的渠道,在众多的DirectX相关教程中叱咤风云多年。

现今,在游戏和多媒体应用相关的音频操作中,我们使用XAudio2(底层)或XACT3(高层)来替代服役了多年的,颇具疲态的DirectMusic

5. DirectSoun
DirectSound是DirectX中另一款被废置的底层音频API,现今被XAudio2取代。
三、第一个DirectX Demo
学习DirectX的最好方式就是勤动手,从头开始一步一步创建简单的demo应用程序。在接下来连续的几篇文章中,我们将一起通过一步步简单的操作,创建我们的第一个DirectX应用程序。随着学习的深入,我们将对D3D从开始设置到结束过程有一个坚实的认识。

Ⅰ.工程的创建

首先我们需要创建一个工程。

创建一个空白的Win32 窗口新工程请执行以下步骤:


1.     打开Visual Studio 2010,从菜单中依次选择 【文件】->【新建】->【工程】

(【File】 > 【New】 > 【Project】),这时会弹出一个新建工程的对话框,如下图 2

图2

 

\

弹出如下窗口:

\

 


2.     我们以“BlankWindowDemo”作为工程名,然后在工程模板列表中选择“EmptyProject”,完成后,点击OK按钮,如图4

\

3.点击“完成”按钮。

 

一个新的空工程就创建完毕了。下一步就是在工程中添加模板代码了。

 

 Ⅱ.代码的书写

 完成上面的步骤,Visual Studio 2010已经为我们创建好一个空的工程了,下一步就是加入源代码来初始化主程序的窗口了。我们以添加一个空白的Cpp文件到工程中开始,这个文件将称为我们的main源程序文件,我们将它命名为main.cpp。创建main.cpp文件的步骤如下:

⑴     在Visual Studio的资源管理器中右击源文件文件夹,然后在弹出的对话框中选择【Add New Item】,如图5

\


⑵    在弹出的对话框中选择C++源文件类型,命名为main.cpp。如图6

\

⑶点击“OK”完成。

在工程中创建好main.cpp源文件后,我们便可以在其中添加完成Win32空白窗口工作的源代码。一旦我们加入了主程序入口点的代码,我们就可以初始化D3D 11然后利用D3D渲染窗口画布。


代码讲解之一:主函数入口点

 main.cpp需要注意的第一个要点是包含必要的Win32头文件和入口点函数。我们应该知道,Win32应用程序的入口点是WinMain函数。目前为止,我们只需要在源文件顶部包括Windows.h头文件即可。在代码段1中可以看到空的WinMain函数和main.cpp的开始部分。

代码段1:Blank Win32 Window Demo书写步骤之一:wWinMain 函数框架

 

补充:软件开发 , Vc ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,