Direct3D9初始化

 

Direct3D9初始化
  1. 获取接口 IDirect3D9的指针。该接口用于获取系统中物理硬件设备的信息并创建接口IDirect3DDevice9,该接口是一个C++对象,代表了我们用来显示3D图形的物理硬件设备。
  2. 检查设备性能(D3DCAPS9),判断主显卡是否支持硬件定点运算。为了创建接口 IDirect3DDevice9,我们必须明确显卡是否支持该功能。
  3. 初始化D3DPRESENT_PARAMETERS结构的一个实例。该结构由许多数据成员组成,我们可以通过这些变量来指定即将创建的结构 IDirect3DDevice9的特性。
  4. 利用已初始化的 D3DPRESENT_PARAMETERS结构创建 IDirect3DDevice9对象(代表了我们用来显示3D图形的物理硬件设备)。

  • 获取接口 IDirect3D9的指针
    要初始化Direct3D,首先必须获取指向接口IDirect3D9指针。
    IDirect3D9 * d3d9 = Direct3DCreate9( D3D_SDK_VERSION ) ;
    参数D3D_SDK_VERSION:保证应用程序使用正确的头文件。
       
IDirect3D9对象主要有两个用途:设备枚举以及创建 IDirect3DDevice9类型的对象。设备枚举是指获取系统可用的每块图形卡的性能,显示模式,格式及其它信息。
  • 校验硬件顶点运算
     创建一个代表主显卡的 IDirect3DDevice9类型对象时,必须制定使用该对象进行顶点运算的类型。如果可以,我们希望使用硬件顶点运算,我们首先得确定显卡是否支持硬件顶点运算。
       要进行检查,我们先得到显卡的性能参数:
       D3DCAPS9  caps;

      
d3d9->GetDeviceCaps(
                                       D3DADAPTER_DEFAULT, //主显卡
                                       D3DDEVTYPE_HAL,
                                       &caps);


       int vp = 0;
       if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
       {
            vp= D3DCREATE_HARDWARE_VERTESPROCESSING;
       }
       else
       {
            vp =
D3DCREATE_SOFTWARE_VERTESPROCESSING;
       }
    *开发应用程序时,若需要一些新的,特别的或高级的特性(那些没有得到硬件广泛支持的特性),在使用前总是先检查一下设备性能(D3DCAPS)是否支持该特性,是很有必要的。
  • 填充 D3DPRESENT_PARAMETERS 结构 
     D3DPRESENT_PARAMETERS用来指定即将要创建的 IDirect3DDevice9类型对象的一些特性。该结构定义如下:
        

       D3DPRESENT_PARAMETERS d3dpp;
       然后为程序为需要的值赋值:
      
d3dpp.Windowed = false;    //指定全屏显示
  • 创建 IDirect3DDevice9接口
    D3DPRESENT_PARAMETERS结构填充完毕之后,我们可以用如下方法创建 IDirect3DDevice9类型的对象。


     IDirect3DDevice9 * device = 0;
       d3d9->CreateDevice(
                                    D3DADAPTER_DEFAULT,            //主显卡
                                    D3DDEVTYPE_HAL,                   //设备类型
                                    hwnd,                                     //对应窗口句柄
                                   
D3DCREATE_HARDWARE_VERTESPROCESSING, //顶点处理类型
                                    &d3dpp,                                                      //设定的
D3DPRESENT_PARAMETERS结构
                                    &device );                                                    //返回创建的设备

       

 

你可能感兴趣的:(Direct3D9初始化)