设为首页 加入收藏

TOP

(Visual C++)游戏开发笔记二十六 DirectX 11各组件的介绍&第一个DirectX 11 Demo的创建 (二)
2014-11-23 19:33:38 】 浏览:799
Tags:Visual 游戏 开发 笔记 二十六 DirectX 组件 介绍 一个 Demo 创建
sic
作用为在应用程序中播放音频内容的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 函数框架

[cpp]
#include
int WINAPI wWinMain( HINSTANCEhInstance , HINSTANCE prevInstance,
LPWSTRcmdLine , int cmdShow )
{
return0;
}
#include
int WINAPI wWinMain( HINSTANCEhInstance , HINSTANCE prevInstance,
LPWSTRcmdLine , int cmdShow )
{
return0;
}

在上面的代码中我们可以看到用wWinMain替换了一般情况下会采用的WinMain。两者的区别是wWinMain用来处理Unicode类型的变量,特别是它的第三个参数cmdLine,而WinMain会执行Unicode和ANSI之间的转换。而这样的转换可能导致缺少一个Unicode字符串中的字符。所以运用wWinMain能让我们正确的处理被传递给应用程序的Unicode类型的参数。

(w)WinMain函数有四个参数。这些参数被定义为如下:

▲HINSTANCE hInstance.应用程序的当前句柄实例

▲HINSTANCEprevInstance. 应用程序的之前句柄实例。MSDN文档中表明这个参数恒为NULL。由于此参数恒为NULL,如果我们需要找到一个判断之前应用程序的实例是否运行的方法,文档中建议我们可以利用CreateMutex函数创建一个唯一命名的互斥变量(mutex)。若该互斥变量被创建了,CreateMutex函数将返回ERROR_ALREADY_EXISTS。

▲LPSTR cmdLine (orLPWSTR in Unicode). 应用程序不包括程序名的命令行指令。

这使得我们可以将命令行指令传递给应用程序,比如在命令提示行中利用命令行字符串提供的快捷操作。

▲int cmdShow. 一个窗口如何被显示的特殊的ID,可取很多已有完善的代码支持的ID。具体取值见下表:


ID值名称
描述

SW_HIDE
隐藏此窗口,激活其他窗口

SW_SHOW
以当前的尺寸和位置激活和显示该窗口

SW_SHOWNA
以当前的状态显示该窗口,并保持激活状态

SW_SHOWNOACTIVATE
用最近的尺寸和大小显示一个窗口,并保持激活状态

SW_SHOWNORMAL
激活和显示一个窗口,如果这个窗口是最小化或者最大化,系统将它重置为原始尺寸和位置(与SW_RESORE相同)

在窗口创建过程中显示窗口的时候,需要使用show ID命令,后面中我们会具体讲解。
代码讲解之二:窗口的初始化

如果没有进行窗口创建过程的话,即使应用程序运行了,也不会在屏幕上显示出来。所以下一步我们的任务是创建Win32窗口。首先,我们注册窗口类,然后创建窗口本身。如代码段2中所述。应用程序必须在系统中注册它的窗口。

代码段2:Blank Win32 Window Demo书写步骤之二:窗口的注册和创建


[cpp]
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCEprevInstance,
LPWSTR cmdLine, int cmdShow )
{
UNREFERENCED_PARAMETER( prevInstance );
UNREFERENCED_PARAMETER( cmdLine );
WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof( WNDCLASSEX ) ;
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.hInstance = hInstance;
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
wndClass.hbrBackground = ( HBRUSH )( COLOR_WINDOW + 1 );
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = "DIRECTX11BookWindowClass";

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇(Visual C++)游戏开发笔记二十.. 下一篇int 和 LPCWSTR 的转换

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目