D3D基础笔记(1)-初始化D3D

 初始化Direct3D的基本步骤:

1.获取一个IDirect3D9接口指针。

2.检查设备的技术特性(D3DCAPS9),搞清楚主显示卡是否支持硬件顶点处理。

3.初始化一个D3DPRESENT_PARAMETERS结构实例,这个结构包含了许多数据成员,它们允许我们指定将要创建的IDirect3DDevice9接口的特性。

4.创建一个基于已经初始化好的D3DPRESENT_PARAMETERS结构的IDirect3DDevice9对象。

代码如下:

// Step 1:获取d3d接口

 IDirect3D9* d3d9 = 0;
    d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

    if( !d3d9 )
 {
  ::MessageBox(0, "Direct3DCreate9() - FAILED", 0, 0);
  return false;
 }

 // Step 2:检测硬件处理能力

 D3DCAPS9 caps;
 d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);

 int vp = 0;
 if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
  vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
 else
  vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

 // Step 3:填充d3dpresent_parameters结构
 
 D3DPRESENT_PARAMETERS d3dpp;
 d3dpp.BackBufferWidth            = width;
 d3dpp.BackBufferHeight           = height;
 d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;
 d3dpp.BackBufferCount            = 1;
 d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;
 d3dpp.MultiSampleQuality         = 0;
 d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD;
 d3dpp.hDeviceWindow              = hwnd;
 d3dpp.Windowed                   = windowed;
 d3dpp.EnableAutoDepthStencil     = true;
 d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;
 d3dpp.Flags                      = 0;
 d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
 d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;

 // 4 创建设备

 hr = d3d9->CreateDevice(
  D3DADAPTER_DEFAULT, // primary adapter
  deviceType,         // device type
  hwnd,               // window associated with device
  vp,                 // vertex processing
     &d3dpp,             // present parameters
     device);            // return created device

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值