我正在研究在C#中使用DirectX的各种选择;理想情况下,我希望使用微软喜欢的任何技术。
非微软技术。
微软技术。
我想使用的技术背后的理由。
问题。
DirectX技术是现代Windows演示和游戏图形的核心,所以有很多不同的途径。你的问题并没有真正说明你正在构建什么样的应用程序,或者你试图针对什么平台。
管理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 phone、Xbox 360或Xbox One。
SlimDX 是一个很好的选择,对于那些已经有一个托管的DirectX 1.1应用程序的人来说,他们希望转移到更好的支持的东西。它兼容x64原生应用程序和.NET 4.0。该项目在进展方面确实停滞不前,但它是开源的,所以你可以随时自己使用它。
XNA游戏工作室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 具有Direct3D9Direct3D9Ex互操作,但不支持Direct3D 10.x或Direct3D 11.x。这对于Win32桌面应用来说是一项有用的技术,但对于Windows Store应用、Windows phone或Xbox One来说则不支持。请看 MSDN. 它并不是特别适合做游戏,但许多游戏开发者已经将它用于他们的工具管道。缺乏对DirectX 10.x11.x的支持是个挑战,但你可以让它与 DXGI共享表面 与Direct3D9Ex。
请注意,有一个GitHub项目 WPF DX11互操作 可以在这里得到帮助。
锐利的DX 是现代DirectX APIs的C#映射的一个流行选择。它还支持Windows Store和Windows Phone应用,并且是一个活跃的项目。
另外,如果你只是想从C#中寻找一种直接使用Direct2D的方法,你可能会想看一看 Win2D.