非Microsoft技术:
> SharpDX
> Slim DX
> Direct2D Manager Wrapper
微软技术
> WPF
> DirectX 9.0 for managed code (deprecated)
> XNA Framework (deprecated)
我想使用的技术背后的理由:
>我想要一个代码优先框架(而不是在WPF中编写XAML)
>我想(理想情况下)一个不被弃用的Microsoft支持的框架
>我想构建不过分依赖第三方依赖关系的应用程序(即如果我是使用WPF构建一个应用程序,该框架可能已经作为.NET框架的一部分安装在用户计算机上)
问题:
>什么是微软编写DirectX exabled应用程序(WPF除外)的首选方法?
>使用不推荐使用的技术(MDX,XNA)有什么危险?
> C#可以使用最流行的非Microsoft DirectX技术是什么?
解决方法
托管的DirectX 1.1在这一点上有很长的问题列表:它不支持.NET 4.x,这意味着VS 2010或更高版本的C#项目默认情况下不能使用它.它使用传统的D3DX9和旧版DirectSetup部署.它不支持64位本机应用程序.它只支持Direct3D 9,而不支持Direct3D 10.x或11.x.它暴露了一堆传统的东西,如DirectPlay和DirectSound.自2006年以来,它还没有更新,并为其寻找样品是一个挑战.它不支持Windows Store应用程序,Windows手机,XBox 360或XBox One.
SlimDX对于拥有现有托管DirectX 1.1应用程序的人来说是一个不错的选择,他希望移动到更好的支持位置.它兼容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 Store应用程序或XBox One.它是专门编写游戏的.
Windows Presentation Foundation具有Direct3D9 / Direct3D9Ex interop,但不是Direct3D 10.x或Direct3D 11.x.这是Win32桌面应用程序的一个有用的技术,但不支持Windows Store应用程序,Windows Phone或XBox One.参见MSDN.它不是特别适合制作游戏,但许多游戏开发人员已经使用它的工具管道.缺少DirectX 10.x / 11.x支持是有挑战性的,但您可以使用Direct3D9Ex与DXGI Shared Surfaces配合使用.
SharpDX是现代DirectX API的C#映射的流行选择.它还支持Windows Store和Windows Phone应用程序,并且是一个活动的项目.
BTW,如果您只是直接从C#中直接使用Direct2D,您可能需要查看Win2D.