在DirectX中渲染环境

3
我想在C#中编写DirectX程序,我有DirectX SDK,应该选择哪种项目?是Windows表单还是...?
我希望在C#中使用DirectX编程。我已经安装了DirectX SDK,但不确定应该选择哪种项目类型。是Windows窗体还是其他类型的项目呢?
3个回答

3
你首先需要问自己的问题是:我的项目的目的是什么?
如果你想要构建具有美丽的2D-3D视觉效果的应用程序,那么你只需要学习WPF。
另一方面,如果你想要构建需要大量资源的游戏,XNA就是最好的选择。
在XNA上构建应用程序非常痛苦,因为XNA是为游戏开发而建立的。同样的道理也适用于使用WPF构建游戏。
在这两种情况下,你不需要与DirectX进行本地通信(这可以通过C++完成),除非你正在构建低级渲染引擎或(非常)高预算的游戏。

2
你应该使用XNA,它是Managed DirectX C#的替代品。
引用: 微软XNA('XNA's Not Acronymed)是由微软提供的带有托管运行时环境的工具集,旨在促进计算机游戏的开发和管理。 XNA试图使游戏开发人员摆脱编写“重复代码模板”的困境,并将游戏生产的不同方面带入单个系统。
来源于维基百科XNA文章
除非您只想渲染窗口,但WPF可能是最好的选择。请参见此博客帖子。

1

XNA:

XNA是一个面向游戏的框架,可以使用像C#这样的.NET语言轻松地针对多个硬件(WindowsXbox 360Zune和现在的Windows Phone 7版本4)进行开发。

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

.NET包装器:

如果您正在寻找类似于本机DirectX API的东西,则有3个选项:

  • Windows® API Code Pack for Microsoft® .NET Framework: 封装了一堆 Windows 原生库,如 DirectX,以便从托管代码中使用。请注意,它不公开 D3D10 之前的 API,如 D3D9。

  • SlimDX:同样是针对 DirectX 的,公开了从版本 9 到 11 的 Direct3D(SlimDX 是一个与 Microsoft 无关的附属项目)。

  • C++/CLI 和自己编写包装器:除非您有特殊需求,否则我不建议这样做。

最终选择取决于您的需求。如果只是为了学习 C# 中的 DirectX API,我会建议选择 Windows API Code Pack 或 SlimDX。


XNA是Managed DirectX C#的替代品。请参见此处http://msdn.microsoft.com/en-us/library/bb197956.aspx和http://blogs.msdn.com/b/al_msft/archive/2006/03/20/555065.aspx。MDX2已被整合到XNA中。 - David Basarab
嗨,David,感谢提供链接。你确实是对的,这是产品定位/营销方面的替代。但你不能否认API Code Pack/SlimDX比XNA更接近本地DirectX,因为它们只是包装器。类似地,MDX1.1和MDX2在过去也是DX9的包装器。 - elmattic
2
XNA团队表示,XNA并不是要“取代”MDX,只是恰好MDX已经停止开发,以便团队能够专注于XNA。XNA和MDX在其目标上有很大的区别。 - Neil N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接