来自C#的DirectX

我正在研究在C#中使用DirectX的各种选项; 理想情况下,我想使用微软首选的任何技术。

非Microsoft技术:

  • SharpDX
  • 超薄DX
  • Direct2D Manager Wrapper

微软技术:

  • WPF
  • 用于托管代码的DirectX 9.0(不建议使用)
  • XNA Framework(已弃用)

我想要使​​用的技术背后的基本原理:

  • 我想要一个代码优先的框架(而不是在WPF中编写XAML)
  • 我希望(理想情况下)Microsoft支持的框架不被弃用
  • 我想构建不过度依赖第三方依赖的应用程序(即如果我要使用WPF构建应用程序,该框架可能已经作为.NET框架的一部分安装在用户计算机上)

问题:

  • 什么是Microsoft首选的编写DirectX exabled应用程序的方法(除了WPF)?
  • 使用弃用技术(MDX,XNA)有哪些危险?
  • 什么是可以在C#中使用的最流行的非Microsoft DirectX技术?

DirectX技术是现代Windows演示和游戏图形的核心,因此它有很多不同的途径。 您的问题并未真正说明您正在构建的应用程序类型或您尝试定位的平台。

Managed DirectX 1.1目前有很多问题:它不支持.NET 4.x,这意味着VS 2010或更高版本的C#项目默认不能使用它。 它使用传统的D3DX9和传统的DirectSetup部署。 它不支持64位本机应用程序。 它只支持Direct3D 9而不支持Direct3D 10.x或11.x. 它暴露了一堆遗留的东西,比如DirectPlay和DirectSound。 它自2006年以来一直没有更新,找到样品是一个挑战。 它不支持Windowsapp store应用,Windows手机,Xbox 360或Xbox One。

对于拥有现有Managed DirectX 1.1应用程序的人来说, SlimDX是一个不错的选择,他希望能够更好地支持某些东西。 它与x64本机应用程序和.NET 4.0兼容。 该项目确实在进展方面停滞不前,但它是开源的,因此您可以随时使用它。

XNA Game Studio 4支持.NET 4.0,可以针对Xbox 360,Windows phone 7,Windows phone 8(在appcompat中)和Windows 32位应用程序。 它不支持x64本机应用程序,内容管道仅与VS 2010兼容。它使用旧版D3DX9,因此它取决于不推荐使用的DirectSetup部署。 它暴露了Direct3D 9而不是Direcxt3D 10.x或11.x. 它不支持Windowsapp store应用或Xbox One。 它专门用于编写游戏。

Windows Presentation Foundation具有Direct3D9 / Direct3D9Ex互操作,但不是Direct3D 10.x或Direct3D 11.x. 这是Win32桌面应用程序的一项有用技术,但不支持Windowsapp store应用,Windows手机或Xbox One。 请参阅MSDN 。 它不是特别适合制作游戏,但许多游戏开发者已经将它用于他们的工具管道。 DirectX 10.x / 11.x支持的缺乏具有挑战性,但您可以使用Direct3D9Ex的DXGI共享表面 。

SharpDX是现代DirectX API的C#映射的流行选择。 它还支持Windowsapp store和Windows Phone应用,是一个活跃的项目。

顺便说一句,如果你只是想直接使用C#中的Direct2D,你可能想看看Win2D 。

请参阅DirectX和.NET