在完成Mesh导入后,准备试着导入其他的X文件来看看效果,结果一直提示我“D3DXLoadMeshFromX()—Failed”。
1.我考虑到是否是X文件结构可能有所不同,即格式差异,去查找相关资料,未果。
其中了解到x文件的结构
(转载)http://blog.csdn.net/lirunfa/article/details/7215548上有详细的说明。
其中常用的模版类型值得留意。
2.仔细检查语法调用是否有错,替换至原先的模型文件后,正常显示。
3.设置断点,查看相关指针为空值(此时始终认为自己文件位置没有放错,而没有深究)。
4.尝试从函数返回信息入手,查询Wondows DirectX Graphics Document 获得“D3DXLoadMeshFromX()“的详细介绍,
没有获得如何知晓返回信息的方法。然后就在这时,无意间看了下模型文件放的位置才突然发现自己放的文件位置有误。
当BUG找到后,我并没有感到高兴,而是为自己低效的BUG排除方法和混乱排除顺序进行了自责,并开始思考如何高效的解决BUG的方法:
1.当遇到BUG时(如果遵循良好的编码原则--对特殊函数、指针、回调值进行判定,会直接定位到BUG出现区域,从而使得排除范围减小,
而语法错误之类的应当避免并且编译器会有提示)对出现区域进行检查。
2排除时手段不能太过单一,我暂时只会简的单设置断点并添加监视,对于编译器提供的各种调试工具(这一点上Android编程中 DDMS Logcat就有相当详细的记录,
)应当有更多的了解。VS中也有:
调试子菜单中-》窗口项中也有强大的帮助功能,应当学着使用。
3.从代码入手,手动获得相关信息也是非常必要的手段,例如开头提到的提示错误,就是通过MessageBox手动设置的。
关于HRESULT http://msdn.microsoft.com/zh-cn/library/ms690088(en-us,VS.85).aspx 中有详细的介绍。