来自C#的DirectX

ser*_*0ne 12 .net c# directx wpf xna

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

非Microsoft技术:

微软技术:

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

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

问题:

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

Chu*_*urn 9

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年以来一直没有更新,为它寻找样品是一个挑战.它不支持Windows应用商店应用,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. 它不支持Windows应用商店应用或Xbox One.它专门用于编写游戏.

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

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

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

请参阅DirectX和.NET

  • SharpDX 不再活跃,就我而言(在专业引擎之外),将 C# + DirectX 送入坟墓。我最近听到的 Microsoft 唯一推荐的方法是将 DirectX 包装为 Window 运行时组件。但是为什么我们没有看到任何重大的努力来做到这一点?也许只是因为 SharpDX 完成了这项工作?还是因为这不是一个现实的解决方案?我不知道。SharpDX 稳定且非常有用,如果您考虑使用不受支持的库,它是当前从 C# 使用 DX11 的绝对最佳解决方案。 (4认同)