DirectX初始化接口失败
这是一段Direct3D接口的初始化代码 程序代码:
pD3D=Direct3DCreate9(D3D_SDK_VERSION); if(pD3D!=NULL) { D3DPRESENT_PARAMETERS d3dpp; memset(&d3dpp,0,sizeof(d3dpp)); d3dpp.BackBufferWidth=SURFACE_WIDTH; d3dpp.BackBufferHeight=SURFACE_HEIGHT; d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat=D3DFMT_A8R8G8B8; d3dpp.BackBufferCount=1; d3dpp.Windowed=false; d3dpp.hDeviceWindow=g_hWnd; d3dpp.MultiSampleType=D3DMULTISAMPLE_NONE; d3dpp.MultiSampleQuality=0; d3dpp.EnableAutoDepthStencil=FALSE; d3dpp.AutoDepthStencilFormat=D3DFMT_D24FS8; d3dpp.Flags=0; d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT; d3dpp.PresentationInterval=D3DPRESENT_INTERVAL_DEFAULT; HRESULT hr=pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,g_hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dpp,&pd3dDevice); if(!FAILED(hr)) { return true; } else { switch(hr) { case D3DERR_INVALIDCALL: OutputDebugString(L"函数的参数为一个无效值\n"); break; case D3DERR_NOTAVAILABLE: OutputDebugString(L"当前设备不支持所设类型\n"); break; case D3DERR_OUTOFVIDEOMEMORY: OutputDebugString(L"没有足够的显存执行操作\n"); break; default: OutputDebugString(L"未知错误\n"); break; } } } return false;
以上代码设备能初始化成功运行正常,后面的画图都没问题。
可是我只要把自动深度缓冲选项打开(d3dpp.EnableAutoDepthStencil=TRUE;),pD3D->CreateDevice函数就调用失败,返回D3DERR_INVALIDCALL错误。
我的显卡是Geforce 540M。
尝试修改各种参数还是不行,哪位大哥知道为什么啊?