C# DirectX中的渲染环境

C# DirectX中的渲染环境,c#,directx,C#,Directx,我想用C#为DirectX编程,我有DirectX SDK, 应该选择什么样的项目?Windows窗体或 您应该使用,这是托管DirectX C的替代品# Microsoft XNA(“XNA”不是缩写)是一组工具,具有由Microsoft提供的托管运行时环境,有助于计算机游戏的开发和管理。XNA试图将游戏开发者从编写“重复的样板代码”中解放出来,并将游戏制作的不同方面整合到一个系统中 除非您只想渲染窗口,但WPF可能是最好的选择。看看这篇文章。你应该先问问自己:我的项目的目的是什么 如果您打

我想用C#为DirectX编程,我有DirectX SDK, 应该选择什么样的项目?Windows窗体或

您应该使用,这是托管DirectX C的替代品#

Microsoft XNA(“XNA”不是缩写)是一组工具,具有由Microsoft提供的托管运行时环境,有助于计算机游戏的开发和管理。XNA试图将游戏开发者从编写“重复的样板代码”中解放出来,并将游戏制作的不同方面整合到一个系统中


除非您只想渲染窗口,但WPF可能是最好的选择。看看这篇文章。

你应该先问问自己:我的项目的目的是什么

如果您打算构建具有漂亮2D-3D视觉效果的应用程序,那么您只需要学习WPF

另一方面,如果你想构建需要大量资源的游戏,XNA是一条可行之路

在XNA上构建应用程序非常痛苦,因为XNA是为游戏而构建的。 使用WPF构建游戏也是如此

在这两种情况下,您不需要与DirectX进行本机通信(这可以通过C++完成)。除非您正在构建低级别渲染引擎或(非常)高预算的游戏。

XNA: XNA是一个面向游戏的框架,允许您使用.NET语言(如C#)轻松定位多个硬件(
Windows
Xbox 360
Zune
,现在是
WindowsPhone 7
,版本4)

请注意,XNA和DirectX SDK之间没有1-1关系,例如,它不公开D3D10或D3D11或您可以在D3DX中找到的一些接口

.NET包装器: 如果您正在寻找与本机DirectX API类似的内容,则有3个选项:

  • : 包装一组Windows本机库(如DirectX),以便可以从托管代码中使用它们。注意,它不公开D3D10之前的API,比如D3D9

  • :相同,但仅适用于DirectX,并公开版本9至11的Direct3D(SlimDX是一个与Microsoft无关的备用项目)

  • DIY包装:除非你有特殊需要,否则我不推荐


最后的选择取决于你的需要。如果只是为了学习DirectX API,但在C#中,我会说选择Windows API代码包或SlimDX。

XNA是托管DirectX C#的替代品。请看这里,MDX2被折叠到XNAHi David中,感谢链接。当然你是对的,这是植入式广告/营销的替代品。但您不能否认API代码包/SlimDX比XNA更接近本机DirectX,因为它们只是包装器。以类似的方式,MDX1.1和MDX2在过去一直是DX9的包装。XNA团队表示,XNA无意“取代”MDX,只是碰巧MDX已经停产,以便团队能够专注于XNA。XNA和MDX在目标上有很大不同。