有些开发员在用D3D库开发时经常遇到初始化失败的问题,我把几个常见的原因归纳一下:
1. 系统没有安装显卡驱动,刚装的系统使用的是默认的驱动,是不支持D3D加速的,这个务必要检查一下。
2. 没有调用CoInitialize加载COM库,虽然在Win7或以上版本,不调用这一句程序也能正常初始化D3D,但是如果在WinXP或旧版系统,就不一定了。所以最好还是在程序启动的时候调用CoInitialize。
3. 程序还没有显示出来窗口就初始化D3D。Win32开发的程序是没有这个问题的。这里所说的程序是基于MFC框架或非Win32开发出来的界面程序,一般我们会在窗口类的OnCreate函数中做初始化工作,这时候虽然窗口创建了(可以获得窗口句柄),但是如果现在初始化D3D就可能会失败(这个问题我是验证过的),要等窗口显示出来之后再调用D3D的初始化函数才成功。这个问题有点奇怪,反正测试过就是这样。如果你开发的程序遇到过这种问题,最好还是等界面出来之后过几百毫秒(用定时器)再初始化。
如果读者有所补充,请留言评论。