64位窗口上的DirectX应用程序

时间:2009-03-27 09:47:12

标签: c# wpf 3d directx

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

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

我们在应用程序中使用了其他一些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:3D更好更快的方式。不幸的是,这个问题发生了。

2 个答案:

答案 0 :(得分:5)

您需要的DLL适用于Managed DirectX。不幸的是,微软不再支持Managed DirectX,而且它是继承者,XNA也不支持64位。

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

答案 1 :(得分:0)

您可以将WPF应用程序设置为仅作为32位应用程序运行。将您的ClickOnce问题发布为另一个SO问题。这可能是你最好的选择。

Project Properties -> Build -> Platform Target -> x86