3D窗口创建工程下载链接:点击打开链接
我前面在我DirectX 2D 游戏的开发的博客里写过关于DirectX 2D游戏窗口的创建,当然那个2D并不是DirectX Draw 的2D,而是运用DirectX Sprite组件,实现2D效果,而3D 游戏需要的窗口创建方法,跟2D基本差不多,不一样的地方有,但是很少,但是,为了帮助一下新手,我还是尽可能 的说一下,当然,不会比我前一篇,DirectX 2D 窗口创建详细
1.创建IDirect3D接口
为了使用D3D中的函数,我们得先定义一个指向IDirect3D9这个接口的指针,顺便说明一下为什么要定义这个指针。 首先,我们要知道接口的内容就是一些纯虚拟函数,所以接口是不能被实例化的,但是我们可以定义一个指向接口的指针。
其次,我们要知道利用多态性我们可以使用一个基类指针来访问派生类中的方法。既然接口是不能被实例化的,那么我们肯定是使用从接口派生出来的类(或结构)的方法。怎么获到这个派生类的指针呢?就是通过之前定义的接口指针(也即是基类指针)来获得。所以我们所需做的就是把一个接口指针的地址传给某个函数,让这个函数来帮我们获到正确的派生类指针,这样我们就可以使用接口指针来做一些实际的东西了。实际上,我们只需要知道接口里面有什么方法以及它能完成什么工作就行了,至于这些方法是怎么实现的我们不必去关心。
我们要做的就是定义一个接口指针,把它传给某个函数,函数使我们的接口指针有意义,接着我们使用接口,就这么简单。定义完这个接口指针后,使用Direct3DCreate9这个函数来创建一个D3D接口
我们要做的就是定义一个接口指针,把它传给某个函数,函数使我们的接口指针有意义,接着我们使用接口,就这么简单。定义完这个接口指针后,使用Direct3DCreate9这个函数来创建一个D3D接口
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
Direct3DCreate9这个函数只有一个参数,它表明要创建接口的版本。如果你想创建一个老的接口版本当然也可以,不过没有人会那样做吧。
2.检测硬件能力(可选)
代码如下:
D3DCAPS9 caps;
ZeroMemory(&caps,sizeof(caps));
g_pD3D->GetDeviceCaps(
D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&caps);
这个东西怎么理解呢,就理解成一张表,然后通过GetDeviceCaps()这个函数,填起这张表,这张表就是通过caps这个结构体产生的,这张表哪来的呢,找到DX SDK的文件夹,里面有个Utilites文件夹,点开它,然后点开bin文件夹,然后点开x86文件夹,里面有个DXCapViewer.exe,双击打开它,点开你那个显卡型号所对应的选项卡,然后点开D3D Device Types,然后再点开HAL选项卡,里面有个Caps,双击它,然后右面有一张表,这就是那张表,那个函数就是把那张表填起来。
3.创建D3D 显示模式结构体,获取当前显卡模式
3.创建D3D 显示模式结构体,获取当前显卡模式
这