【发布时间】:2016-04-06 16:52:35
【问题描述】:
背景:我在 Visual Studio 2013 中进行开发,目标是 .Net 4.5,在 Windows 7 上运行。我一直试图让 DirectX 在 WPF 上下文中运行,并被称为 SharpDX ,以及使用它的示例程序:http://sharpdxwpf.codeplex.com/SourceControl/latest#SharpDX.WPF.sln
当我尝试构建它时,由于缺少“d3dcompiler_43.dll”而出现错误。我通过显式下载 DirectX 最终用户运行时 (https://www.microsoft.com/en-us/download/details.aspx?id=8109) 解决了这个问题
我的问题:根据 MSDN,DirectX 已被折叠到 Windows 8 SDK (https://blogs.msdn.microsoft.com/chuckw/2012/03/22/where-is-the-directx-sdk/) 中,并且根据同一文档,它包含在 Visual Studio 2012 中。
由于我使用的是 VS2013(专业版),我认为它也包含在其中。那么,为什么我必须明确下载 DirectX 最终用户包才能获取我的 DLL?还是 Windows 8 SDK 不包含旧版 DLL? (如果是这样,遗留程序应该如何在 Windows 8 和 10 中运行?)有人可以向我解释一下 DirectX 路线图吗?
【问题讨论】:
-
这是一个笨拙的 DLL,着色器编译器不是 DirectX 运行时的一部分,只能部署在与使用它的 EXE 相同的目录中。请注意,_43 版本是旧的。您应该要做的是使用 SDK 附带的副本。使用像 SharpDX 这样的包装器会变得模糊,因为它不需要 SDK。
-
@Hans_Passant 那么汉斯,在 WPF 上下文中是否有一种非模糊的方式来获得 3D 线的硬件加速? WPF 没有本机 3D 线原语,所有替代方案似乎都不受支持或使用已弃用的 DirectX/Direct3D DLL 的第 3 方爱好项目(SlimDX、SharpDX、Helix3D 等)。我是一名执行短期任务的合同工程师,我想给我的客户留下一些他们可以维护的东西,这些东西不依赖于已弃用或不受支持的第三方组件。