0

感谢 StackOverflow,我解决了一个困扰我一段时间的链接器错误。我假设库 d3d11 包含 d3dx11 的功能,这导致了混乱。

这两个库有什么区别?d3dx11 是否在其描述中仅提及“D3DX 实用程序库”。

4

2 回答 2

4

对于 directX 标头,但我认为 lib 应该是相同的:

这些文件包括不同的东西。d3d11.h 文件包含 Direct3D 的核心部分。d3dx11.h 文件包含 Direct3D 的扩展,这些扩展对于图形库来说不是必需的,但在编写游戏或其他图形程序时会派上用场。

于 2012-11-08T15:20:13.197 回答
0

d3d11.lib是 Direct3D 11 API,它包含在您的 Windows 操作系统中。可以在Windows SDK中找到最新版本的d3d11*.h头文件和库。d3d11.lib

d3dx11.lib是 Direct3D 11 的“帮助”库,其中包括D3DX11CreateTextureFromFileD3DX11SaveTextureToFile. 它是可选的,并且运行时 DLL不是Windows 操作系统的一部分——必须部署它才能让您的应用程序运行。

Direct3D 9(又名 D3DX9)的 D3DX 具有精灵、图案线、网格、字体、纹理加载/保存、BC (DXT1-5) 压缩、邻接计算、D3DXmath 和效果 (FX) 库的功能。它包括 HLSL 编译器。它还具有 MSR 的其他功能,例如渐进式网格、顶点缓存优化、uvatlas 等高线图和预计算辐射传输 (PRT)。

Direct3D 10(又名 D3DX10)的 D3DX 比 D3DX9 稍微精简一些,并利用 Windows 映像组件 (WIC) 进行图像 I/O。它支持 BC1-5 压缩。文件格式已.x被弃用,因此虽然 D3DX10 有一个网格对象,但它没有办法从磁盘创建或保存一个。包含 D3DXMath,与 D3DX9 版本相同。Direct3D 10 (FX10) 的效果系统被放入操作系统。HLSL 编译器被拆分为D3DCompile API。

Direct3D 11(又名 D3DX11)的 D3DX 是一个比以前版本小得多的库。它主要只是通过 WIC 和 BC1-7 压缩加载/保存纹理。D3DXMath 被 DirectXMath取代。Direct3D 11 (FX11) 的效果已被弃用,运行时已成为开源项目。Direct2D 支持“模式线”和演示图形功能,并且 DirectWrite 应该替换字体功能。

根据Microsoft Docs,D3DX9、D3DX10 和 D3DX11 连同旧版 DirectX SDK 均已弃用。

D3DX11有很多替代品,其中大部分是开源的。有关完整列表,请参阅没有 D3DX 的生活。

对于需要 D3DX9/D3DX10/D3DX11 的旧代码库,您可以使用Microsoft.DXSDK.D3DX NuGet 包,而不是使用旧版 DirectX SDK。

于 2021-03-08T08:38:58.423 回答