2.Direct 3D程序Windows程序代码.docVIP

  • 2
  • 0
  • 约1.79万字
  • 约 26页
  • 2017-06-03 发布于湖北
  • 举报
2. Direct 3D程序的Windows程序代码 Microsoft Direct3D的程序可以设计成只在全屏幕模式或窗口模式下执行-或者是在二者下皆可执行。当处于全屏幕模式下时,程序会接管整个屏幕,这也是比较普及的作法(基于许多理由)。它可以让您的程序选择切换屏幕分辨率及色板层次,以便在硬件上有最好的表现。它也可以提供使用者较好的体验,因为它也允许切换绘图页并且不需要更新其它程序的图形,所以通常能提供更高的效率。另一方面,有时在窗口模式下执行Direct3D程序会比较好-通常是当使用者也想在屏幕上看到其它程序的输出画面时。 我认为最好是开发全屏幕和窗口模式二者均可执行的程序代码,并且允许使用者在二种模式间切换。虽然这样做会对您的开发作业增加一些时间和复杂度,却可以让使用程序的人选择他们适用的环境。更重要的是,这样可以让您的应用程序配合更多的硬件加速卡得到最好的执行效果。如果有一个使用者正在一个具有二种加速卡的环境下作业(一种支持窗口应用,而另一种只支持全屏幕模式),您的软件可以辨别不同加速卡的功能,并且提供使用者选择增加速度或增加功能。此外,在窗口模式下较易除错。如果要在全屏幕模式下有效的除错,您必须要另接一台屏幕或是用远程除错(remote debugger)。 在您试着开发一个Direct3D应用程序之前,最好先了解Microsoft Windows程序的开发方式。本章会说明要产生一个叫作RoadRage的Direct3D应用程序时的必要的Windows程序代码。RoadRage利用了在第一章提到的Direct3D程序框架,并且同时支持窗口模式和全屏幕模式。您可以在随书光盘上的RoadRage系统档案roadrage.dsw的Chap2子项目中找到关于本章的实际程序代码。这些程序代码是包装在主要的CMyD3DApplication类别及其它的C++类别中。它说明了如何产生一个窗口及附属的菜单来控制Direct3D应用程序中的Direct3D参数(例如烟雾和上色)。本书重心会放在产生RoadRage应用程序上。?第三章?,您可以学到加入以DirectDraw为主的程序,用来辨识执行环境的2D功能,并且让您的应用程序可在窗口及全屏幕模式下切换(依不同的分辨率)。本章的最后,您会知道如何加入程序来启动菜单中的特性(如烟雾和贴图),并且提供其它的功能,包括动态角色和网络联机游戏。 如何将您的Windows程序代码结构化   一个典型应用程序的Windows部分程序代码是由下列程序代码区块所构成的: 设定函式档和定义全域唯一识别码GUID的程序代码。   WinMain,用来设定主窗口和讯息处理。   定义主窗口样式的程序代码(在RoadRage中,这是由CMyD3DApplication CD3DApplication类别里的程序代码来处理)。   主要的窗口讯息处理函式(在RoadRage中,这是由d3dapp.cpp的WndProc负责将讯息传给CMyD3DApplication::MsgProc和CD3DApplication::MsgProc)。   让我们试着浏览一遍所有Windows相关程序每一部分的实作内容。假如您将随书光盘上的程序代码安装好,并且打算依照本章所讨论的内容,请在Microsoft Visual C++中的?File?菜单中点选?Open Workspace?,点选?roadrage.dsw?,并且按下?Open?。Roadrage.dsw是本书的系统文件。如果要把?第二章?的内容变成作用中的项目,请在Workspace窗口中选择?FileView?,鼠标右键点选Chap2,并且从关联菜单中选择?Set as Active Project?。 指定函式档和定义GUID的程序代码   凡使用到DirectX的程序都需要定义特定的GUID(例如IID_IDirectDraw7),这样才能成功的编译。GUID是一种全域变量而非常数,所以您必须再定义储存空间。一种可将需要的GUID并入您程序的作法,是在建立项目时将dxguid.lib含括在您的函式库中。或者您喜欢另一种方式,就是在您括入标头档windows.h、dddraw.h、d3d.h及使用任何其它的 #define定义前,先用下列方式在某个原始程序模块中定义符号INITGUID: #define INITGUID 如果您忘了定义INITGUID或括入dxguid.lib,您在编译DirectX程序代码时会碰到一大堆错误。 提示 要编译一个有用到DirectX的程序,您必须让您的编译器能用到包含最新的DirectX函式及函式库档案的目录。为了确定Visual C++的设定正确,从?Tool?菜单中点选?Options?,并按下?Directorie

文档评论(0)

1亿VIP精品文档

相关文档