从C#到DirectX

问题描述 投票:12回答:1

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

非微软技术。

微软技术。

我想使用的技术背后的理由。

  • 我想要一个代码优先的框架(相对于在WPF中编写XAML)。
  • 我想要(理想的情况下)一个微软支持的、没有被废弃的框架。
  • 我希望构建的应用程序不会过度依赖第三方(例如,如果我用WPF构建一个应用程序,该框架很可能已经作为.NET框架的一部分安装在用户机器上)。

问题。

  • 微软编写DirectX exabled应用程序的首选方法是什么(除了WPF)?
  • 使用废弃的技术(MDX、XNA)有什么危险?
  • 最流行的非微软DirectX技术是什么,可以从C#中使用?
c# .net wpf xna directx
1个回答
10
投票

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.

DirectX和.NET

© www.soinside.com 2019 - 2024. All rights reserved.