繁体   English   中英

D3DX10.h和D3DCompiler.h兼容性问题?

[英]D3DX10.h and D3DCompiler.h compatibility issue?

我与DirectXTutorial一起关注,遇到了一个我无法解决的问题。 过去,有些问题无法解决,例如D3DX11CompileFromFile(),因此我不得不使用D3DCompileFromFile并包含d3dcompiler.h。

现在,我要进行3D转换,我必须将D3DX10Math.h包含在所涉及的矩阵中。 为此,我必须再次编辑include和lib目录以包含DirectX SDK(2010年6月)。

一旦执行此操作,D3DCompileFromFile()就变得不确定。 我试过更改目录的顺序并更改标头中包含的顺序,但似乎没有任何作用。 他们只是不想一起工作。 这是我的包括:

#include <windows.h>
#include <windowsx.h>
#include <d3d11.h>
#include <d3dcompiler.h>
#include <DirectXPackedVector.h>
#include <D3DX10math.h>

与lib一起包括:

#pragma comment (lib, "d3dcompiler.lib")
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")

另外,目录的图片: 目录

关于我在做什么错的任何想法? 还是我不知道某种不兼容?

基本问题是旧版DirectX SDK已过时,并且其中的标头比VS 2012或更高版本随附的标头更旧 参见MSDN

理想的解决方案是完全不使用旧版DirectX SDK内容。 您不会将D3DX10用于数学运算,而是使用DirectXMath 您不会使用D3DX11进行纹理加载,而是使用DirectX Tool Kit之类的其他解决方案。 有关替代品的完整列表,请参阅《不带D3DX的生活》

可能您正在使用一个较旧的教程,该教程希望您使用现在已弃用的东西,例如D3DX11。 您仍然可以这样做,但是您需要格外小心。 特别是,您需要在标准包含路径之后添加DirectX SDK包含/库路径。 这通常是在Visual C ++中完成的,方法是在项目设置中编辑VC ++目录页面,并确保在末尾而不是在开始时添加include / lib路径-这也意味着避免使用之前的“ 其他目录”选项。其他标题/库。

有关更多信息,请参见此MSDNZombie DirectX SDK的底部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM