最近把自己的一个DEMO移植到另外一台电脑上,当全部环境整理好之后,一运行却发现调用 D3DXCreateEffectFromFile 的地方没成功。
之前遇到过类似问题,以为是资源目录问题,于是设置好了工作目录,问题同样出现。
怀疑是debug版本的文件和release版本文件的目录问题,又重新把文件删除了再加进来,问题依旧。
于是上网搜索,说可以在调用的地方直接用绝对路径,尝试了下,同样不行,开始怀疑是机器设备问题了。
网上也有说要更新驱动设备之类的,但还没确定是设备问题,于是还往代码的方向研究。
再看到的办法是在 D3DXCreateEffectFromFile 的 flag 参数里面加上D3DXSHADER_USE_LEGACY_D3DX9_31_DLL,却发现这个宏居然显示没定义,想想应该不是这问题,我用的是DX9。
无奈之余看到工程里的输出: D3DX: D3DXCreateEffectFromFileA: Invalid device pointer
终于确定原因了,是机器设备问题,不用在往程序上耗费时间了。
要想解决问题,先确定问题,不然,只会是徒劳无功罢了。