感谢StackOverflow,我解决了链接器错误,这一直困扰着我。 我假设库d3d11包含d3dx11的功能,这导致了混淆。
两个图书馆之间有什么区别? d3dx11在其描述中仅提及“D3DX实用程序库”。
答案 0 :(得分:4)
对于directX标题,但我认为它应该与lib相同:
文件包含不同的内容。 d3d11.h文件包含Direct3D的核心部分。 d3dx11.h文件包含Direct3D的扩展,这些扩展对于图形库来说不是必需的,但在编写游戏或其他图形程序时可以非常方便。
答案 1 :(得分:0)
d3d11.lib
是 Direct3D 11 API,它包含在您的 Windows 操作系统中。可以在 Windows SDK 中找到最新版本的 d3d11*.h
标头和 d3d11.lib
库。
d3dx11.lib
是 Direct3D 11 的“帮助程序”库,包括 D3DX11CreateTextureFromFile
和 D3DX11SaveTextureToFile
之类的内容。它是可选的,并且运行时 DLL 不是 Windows 操作系统的一部分——它必须被部署才能运行您的应用程序。
D3DX for Direct3D 9(又名 D3DX9)具有精灵、图案线、网格、字体、纹理加载/保存、BC (DXT1-5) 压缩、邻接计算、D3DXmath 和效果 (FX) 库。它包括 HLSL 编译器。它还包含来自 MSR 的其他内容,例如渐进式网格、顶点缓存优化、uvatlas 等值线图和预计算辐射传输 (PRT)。
D3DX for Direct3D 10(又名 D3DX10)比 D3DX9 更精简,并使用 Windows 成像组件 (WIC) 进行图像 I/O。它支持 BC1-5 压缩。 .x
文件格式已被弃用,因此虽然 D3DX10 具有网格对象,但它无法从磁盘创建或保存网格对象。包含 D3DXMath,并且与 D3DX9 版本相同。将 Direct3D 10 (FX10) 的效果系统放入操作系统。 HLSL 编译器被拆分为 D3DCompile API。
D3DX for Direct3D 11(又名 D3DX11)是一个比以前版本小得多的库。它主要只是通过 WIC 和 BC1-7 压缩加载/保存纹理。 D3DXMath 被替换为 DirectXMath。不推荐使用 Direct3D 11 (FX11) 的效果,并将运行时制作为 open source 项目。 Direct2D 支持“模式线”和演示图形功能,而 DirectWrite 应该取代字体功能。
D3DX9、D3DX10 和 D3DX11 与旧版 DirectX SDK 一起弃用 Microsoft Docs。
D3DX11 有很多替代品,其中大部分是开源的。有关完整列表,请参阅 Living Without D3DX。
<块引用>对于需要 D3DX9/D3DX10/D3DX11 的旧代码库,您可以使用 Microsoft.DXSDK.D3DX NuGet 包,而不是使用旧版 DirectX SDK。