|
LPDIRECT3D9 m_pd3d;
LPDIRECT3DDEVICE9 m_pd3device;
LPD3DXSPRITE m_pXSprite;
LPDIRECT3DTEXTURE9 m_pTexture;
D3DDISPLAYMODE m_d3ddm;
Init( HWND hWnd, int wid, int hei )
{
if( ( m_pd3d = Direct3DCreate9( D3D_SDK_VERSION ) ) == NULL )
return false;
m_pd3d->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &m_d3ddm );
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.BackBufferFormat = m_d3ddm.Format;
d3dpp.BackBufferWidth = wid;
d3dpp.BackBufferHeight = hei;
d3dpp.Windowed = true;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hwnd;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp.MultiSampleQuality = 0;
HRESULT re;
if( ( re = m_pd3d->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&m_pd3device ) ) != D3D_OK )
return false;
re = D3DXCreateSprite( m_pd3device, &m_pXSprite );
if( re != D3D_OK )
return false;
re = m_pd3device->CreateTexture( wid,hei,0, D3DUSAGE_SOFTWAREPROCESSING,
d3dpp.BackBufferFormat,
D3DPOOL_MANAGED,
&m_pTexture,
NULL );
if( re != D3D_OK )
return false;
}
为什么在执行这个初始化init函数的时候,总是createtexture失败,总是返回D3DERR_INVALIDCALL |
|