2010-05-10 43 views
3

我正在研究C#XNA游戏,最流行的声音SDKs如MSS或FMOD主要与C/C++一起工作。是否有任何可以与.NET一起使用的声音SDK?

+0

[DirectSound](http://msdn.microsoft.com/zh-cn/library/bb318665.aspx)。此外,一些[相当不错的信息](http://stackoverflow.com/questions/1084433/play-sound-in-net-using-generated-waveform-data) – 2010-05-10 18:23:31

+0

使用AudioEngine或SoundEffect类。 – 2010-05-10 18:27:25

回答

0

NAudio适用于.NET,但不幸的是我相信它使大量的P/Invoke的使用。这意味着虽然您可以在Windows上使用XNA,但如果您需要在XBox等设备上运行代码,则可能会遇到问题。

0

其实它并没有那么差,因为你可以使用P/Invoke从csharp调用c/cpp库。
如果你留在窗口,你只需要创建(或找到)C#和你选择的库之间的图层。
还有小example如何从cpp dll调用函数。

+0

非常感谢! 目前我使用的是XNA的声音系统,但是选择专业的SDK说得更好。如果真的没有第三方软件开发工具包直接与C#一起工作,P/Invoke几乎是唯一的方法。 – Andrew 2010-05-11 17:35:43

+0

@Andrew,如果你满意这个答案,你可以在我的答案上签字V – Avram 2010-05-15 22:10:42

0

我同意上面的Avram,虽然我不会调用,但如果可以的话,我会生成一个使用tlbimp.exe的包装,您应该能够从您的一个fave开源C/C++ API中找到一个类型库然后在其上运行tlbimp.exe。

通过这种方式,您可以获得api的所有特权,而无需自己处理pinvoke /其他不安全调用的麻烦,包装程序可以处理所有这些麻烦。

...

我会然而质疑它是什么,你想要的音频,你不能这样做已经有一点whizzy使用核心.Net和XNA类,编码自己,如果我的事做疯狂我已经看到人们做一些事情,比如安装一个第三方发烧友应用程序,然后从这些应用程序中拉出dll,然后在那些方面进行调整(尽管很努力)。

如果你想避免pinvoke调用altogeher,你几乎已经狂放到XNA本身什么。

虽然有很多游戏引擎,但可能会包含一些您可以借用的漂亮音频类。

相关问题