请问:小弟我用DX9.0c开发了一个小游戏,发现可以在有独立显卡的机器上运行,但是在集成显卡的机器上却运行不了.为什么

请教:我用DX9.0c开发了一个小游戏,发现可以在有独立显卡的机器上运行,但是在集成显卡的机器上却运行不了.为什么?
我用DX9.0c开发了一个小游戏,发现可以在有独立显卡的机器上运行,但是在集成显卡的机器上却运行不了.
其中创建DX对象的部分是这么写的:

bool   GameFrame::initDirect3D()
{
//调整屏幕使用区大小
RECT   rect;
rect.left   =   0;
rect.top   =   0;
rect.right   =   SCREENPELSX;
rect.bottom   =   SCREENPELSY;
AdjustWindowRectEx(   &rect   ,   GetWindowLong(   HWINDOW   ,   GWL_STYLE   )   ,   (GetMenu(   HWINDOW   )!=NULL),   GetWindowLong(   HWINDOW   ,   GWL_EXSTYLE)   );
MoveWindow(   HWINDOW   ,   rect.left   ,   rect.top   ,   rect.right   -   rect.left   ,   rect.bottom   -   rect.top   ,   true   );


//建立d3d对象
D3D   =     Direct3DCreate9(   D3D_SDK_VERSION   );
if(   !D3D   )
{
throw   GameException(   string( "建立d3d对象失败! "),   true   );
}

//取得目前桌面显示模式
D3DDISPLAYMODE   d3ddm   ;
if(   D3D-> GetAdapterDisplayMode(   D3DADAPTER_DEFAULT   ,   &d3ddm   )   !=   D3D_OK   )
{
throw   GameException(   string( "取得目前桌面显示模式失败! "),   true   );
}

//建立绘图设备
D3DPRESENT_PARAMETERS   d3dpp;
memset(   &d3dpp   ,   0   ,   sizeof(   d3dpp   ));
d3dpp.Windowed =   isWindows;
d3dpp.BackBufferFormat =   d3ddm.Format;
d3dpp.BackBufferCount =   1;//后备缓冲的数目
d3dpp.BackBufferWidth =   SCREENPELSX;//后备缓冲的宽度和高度
        d3dpp.BackBufferHeight =   SCREENPELSY;
d3dpp.SwapEffect =   D3DSWAPEFFECT_DISCARD;//交换缓冲支持的效果类型
d3dpp.hDeviceWindow =   HWINDOW   ;//显示设备输出窗口的句柄
d3dpp.Flags =   D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
        d3dpp.AutoDepthStencilFormat =   D3DFMT_D16;
        d3dpp.EnableAutoDepthStencil =   TRUE;
d3dpp.PresentationInterval =   D3DPRESENT_INTERVAL_IMMEDIATE;

if(   D3D-> CreateDevice(   D3DADAPTER_DEFAULT   ,  
D3DDEVTYPE_HAL   ,   HWINDOW   ,   D3DCREATE_HARDWARE_VERTEXPROCESSING   ,  
&d3dpp   ,   &D3DDEVICE   )   !=   D3D_OK   )
{
throw   GameException(   string( "建立绘图设备失败! "),   true   );
}

return   true;
}
结果在集成显卡上运行老是出现 "建立绘图设备失败! "的错误,但是在独立显卡上却运行得很正常.请教原因.

------解决方案--------------------
D3D-> CreateDevice( D3DADAPTER_DEFAULT ,
D3DDEVTYPE_HAL , HWINDOW , D3DCREATE_HARDWARE_VERTEXPROCESSING ,
&d3dpp , &D3DDEVICE )

这里面的D3DDEVTYPE_HAL和D3DCREATE_HARDWARE_VERTEXPROCESSING可以改为软件方式就可以了,因为集成显卡很多不支持硬件方式。