c# - 64 位 Windows 上的 DirectX 应用程序

标签 c# wpf 3d directx

我正在开发一个 WPF 应用程序,其中 3D 部分由 DirectX 9 处理(许多 3d 使用 WPF 运行速度不够快)。

问题是应用程序以“任何 CPU”作为配置发布,当用户在 64 位 Windows 上运行它时,direcX 部分崩溃(System.BadImageFormatException)。显然,directX 部分包含的 dll 在 64 位 Windows 上不可用。

我们在应用程序中使用的其他一些 3:rd 部分 dll 会发生这种情况,但如果用户在 64 位 Windows 机器上运行,我们可以通过将运行时的 dll 更改为为 x64 构建的 dll 来解决这个问题。你们中有人知道我在哪里可以找到 x64 的 DirectX 9 dll 吗?如果它们存在的话。

我需要的是:

  • Microsoft.DirectX.Direct3D
  • Microsoft.DirectX.Direct3DX
  • Microsoft.DirectX

如果不存在,是否可以通过其他方式解决问题?我无法将配置更改为 x86,因为应用程序是通过 ClickOnce 发布的,配置的更改会使 ClickOnce 停止工作(配置包含在 ClickOnce 键中)


让我补充一点,我正在使用由 WPF 应用程序托管的 Winforms 部分,并且 winforms 部分正在使用我询问的 DirectX dll。这是在 WPF 中呈现大量 3D 网格的一种比使用 WPF:s 3D 更好更快的方法。不幸的是,这个问题反而发生了。

最佳答案

您需要的 DLL 用于 Managed DirectX。不幸的是,Microsoft 不再支持 Managed DirectX 及其后续版本,XNA 也不支持 64 位。

SlimDX 是 Managed DirectX 的开源替代品,它支持 64 位。另一种选择是在非托管 C++ 中编写 DirectX 代码。

关于c# - 64 位 Windows 上的 DirectX 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689111/

相关文章:

wpf - 虚拟化 Wrap Panel WPF - 免费解决方案?

c# - 当我加载数据库时,使用带有 LINQtoSQL 的 .mdf 数据库的 WPF C# 程序卡住了一点

java - 对于多人游戏场景,如何在客户端之间序列化更新消息?

html - Css 变换 3d

c# - 使用 C# 验证 SSL 证书

c# - C#中最常用的接口(interface)是什么?

c# - 记住用户输入的 Windows 应用程序

math - 如何将彩色点从 2D 图像移动到 3D 球体

c# - 如何解决 .net Framework 4.7 中无法加载文件或程序集“Microsoft.Extensions.Hosting.Abstractions”问题?

c# - 如何获取带空格的 XElement 值?