使用DirectX和Visual Studio 2012

11

我有一些使用C#编写的DirectX项目,需要通过Visual Studio 2012运行。

所有这些项目都使用名为“Microsoft.DirectX”的命名空间。

我在我的Windows 8计算机上完全成功安装了Microsoft Windows SDK,但是该命名空间仍然无法识别。

我的问题是,“如何使用C#,Visual Studio 2012和MS Windows SDK的组合运行和开发DirectX应用程序?”


4
Win8/VS2012 仅支持 C++ 的 DirectX(开箱即用)。如果您想使用DirectX,则必须使用C ++(这是 Microsoft 的说法)。无论如何,你想开发哪种应用程序?Metro 还是 Desktop for Win8?也要兼容Win7吗?你想使用什么样的 .Net 版本?在从托管代码中调用DirectX时,这很重要(Metro有一些限制,旧版的 .Net 可能无法与你的框架配合工作)。 - Beachwalker
我会建议尝试使用SharpDX(API非常相似,而且你的示例项目应该很容易修改为使用SharpDX)。这也是SlimDX的优点之一,但据我所知,SharpDX更快。 - Beachwalker
现在我并不需要开发新的应用程序。我只是想打开这些项目来看看它们是如何工作的。如果我开始开发新的应用程序,我可能会使用其中一个包装器。 - Radek Wyroslak
3个回答

9
我建议您查看SharpDX。这是一个对DirectX进行了轻量级管理的访问,其API与未经管理的版本非常相似(SharpDX是从未经管理的c ++标头文件自动构建的)。据我所知,这目前是使用DirectX最快的托管方法。
一个非常重要的事情可能是你能够开发Win8-Metro-Apps。据我所知,其他库不一定可以/允许这样做。我提到这个因为你写了你想在Win8上开发,但你没有说是什么类型的应用程序。Metro-Apps比Win8桌面应用程序有更多的限制。

如前所述,托管DirectX已经过时。但是自从最后一个版本4发布以来,似乎XNA也不再得到维护。因此,如果您想使用现代的DX10或DX11,则会遇到困难,因为XNA使用DX9。在这种情况下,一种替代方法是ANX框架。该项目目前处于早期开发阶段,但对我来说似乎很有前途。ANX可以使用DirectX进行渲染,并在这种情况下使用SharpDX。与仅与DirectX9相关的XNA不同,SharpDX还具有使用其他渲染器的能力(例如,用于Linux的OpenGL)。


3

Managed DirectX已经过时,不再由Microsoft维护,因为它正在被XNA取代。支持Managed DirectX的最后一个版本是此版本(2010年2月发布)。

你也可以尝试使用SlimDX

SlimDX是一个免费开源框架,使开发人员可以轻松地使用.NET技术(如C#、VB.NET和IronPython)构建DirectX应用程序。它旨在成为一个高效、简单和精简的包装器,完全涵盖了微软的所有游戏和多媒体技术,并将其暴露给托管代码。所有代码都遵循MIT/X11许可协议,所有内容都遵循创意共享署名-相同方式共享许可协议。我们的最新版本是2011年3月发布的,用户和开发者可以在下载页面找到。


无法确定代码实际上是Managed DirectX还是XNA。这个命名空间(目前为止我们唯一的提示)也存在于XNA中。 - bitbonk
我原以为是Managed Direct X,因为他说了“我有一些C# DirectX项目”。但正如你所说,也可能是XNA……除非他提供更多细节,否则我们无法确定。 - Nasreddine

1

2
我可以使用XNA打开这些旧项目吗? - Radek Wyroslak
1
这取决于它有多旧。你给我们的唯一提示是 Micorsoft.DirectX 命名空间。我相信这个命名空间存在于非常古老的 Managed DirectX 中,也存在于现在历史悠久的 XNA 中。如果它是 Managed DirectX,你将不得不将其转换为 XNA。如果它已经是 XNA,你将不得不将其转换为最新版本的 XNA(这可能需要较少的工作)。 - bitbonk
我认为这是托管DirectX。感谢您的回答。 - Radek Wyroslak
似乎XNA框架的开发并不是很活跃。XNA是一种游戏(引擎)的基础框架,而Managed DirectX则是一种方法,旨在使非托管的DirectX API直接可用于.Net程序员 => XNA具有与(托管)DirectX不同(且更简单)的API。 - Beachwalker
我检查了一下,XNA似乎不支持VS 2012。 - Radek Wyroslak

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