准备条件:VS2005、Microsoft DirectX SDK (April 2007)
测试环境:Xp SP2、M440、GF7300go、1G DDR2 667
1、在VS2005中创建空项目,新建文件CreateDeviceMy.cpp代码如下:
//
包含Dx9的头文件
#include < d3d9.h >
#pragma warning( disable : 4996 ) // 除去警告
#include < strsafe.h >
#pragma warning( default : 4996 )
// -----------------------------------------------------------------------------
// 全局参数
// -----------------------------------------------------------------------------
LPDIRECT3D9 g_pD3D = NULL; // 创建 D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // 我们使用的渲染设备
// -----------------------------------------------------------------------------
// 名称: InitD3D()
// 描述: 初始化 Direct3D
// -----------------------------------------------------------------------------
HRESULT InitD3D( HWND hWnd )
... {
// 根据版本创建D3D对象
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
//设置参数
D3DPRESENT_PARAMETERS d3dpp; //参数对象,用于下面的设备创建
ZeroMemory( &d3dpp, sizeof(d3dpp) ); //用0来填充d3dpp内存区域,也就是初始化内存
d3dpp.Windowed = TRUE; //设置为窗口模式
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //交换缓冲支持的效果类型,指定表面在交换链中是如何被交换的。这里为后备的缓存加载之后就删除。
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //显示模式
//创建设备驱动Direct3D
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, //默认适配器
D3DDEVTYPE_HAL, //硬件驱动
#include < d3d9.h >
#pragma warning( disable : 4996 ) // 除去警告
#include < strsafe.h >
#pragma warning( default : 4996 )
// -----------------------------------------------------------------------------
// 全局参数
// -----------------------------------------------------------------------------
LPDIRECT3D9 g_pD3D = NULL; // 创建 D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // 我们使用的渲染设备
// -----------------------------------------------------------------------------
// 名称: InitD3D()
// 描述: 初始化 Direct3D
// -----------------------------------------------------------------------------
HRESULT InitD3D( HWND hWnd )
... {
// 根据版本创建D3D对象
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
//设置参数
D3DPRESENT_PARAMETERS d3dpp; //参数对象,用于下面的设备创建
ZeroMemory( &d3dpp, sizeof(d3dpp) ); //用0来填充d3dpp内存区域,也就是初始化内存
d3dpp.Windowed = TRUE; //设置为窗口模式
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //交换缓冲支持的效果类型,指定表面在交换链中是如何被交换的。这里为后备的缓存加载之后就删除。
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //显示模式
//创建设备驱动Direct3D
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, //默认适配器
D3DDEVTYPE_HAL, //硬件驱动