7

我正在从 WinForms/XNA 过渡到 WPF/SlimDX,因为:

  • a) WPF 优于 WinForms 的所有好处(但学习曲线 = 哎哟!)
  • b) 我想将多个 SlimDX 视口附加到面板。XNA 有 1 个“游戏”屏幕。
  • c,最后也是最少的)DirectX 10 支持

我以前的所有 XNA 代码都是用 C# 编写的。我无法弄清楚如何将其移植到高级别的 SlimDX 和 WPF。我已经疯狂地搜索了。我发现的最接近的是:

1) http://www.gamedev.net/community/forums/topic.asp?topic_id=507941 许多文章都指向这个讨论,但是它不完整,我无法弄清楚 XAML,之后我得到设备错误附加所有遗漏的 _slimDXDevice 和 Window1 事件。

2) http://www.codeproject.com/KB/WPF/D3DImage.aspx 本文假设用户正在移植C++。我正在移植非常接近 MDX 代码的 XNA 代码。

如果我有一个 WPF 表单,它带有一个自定义的 SlimDX 驱动的视口,它只是一个蓝框,我可以从那里开始。在 XNA 中,我渲染了许多单独的 RenderTargets 并将它们放置在整个屏幕上,现在我想将它们附加到控件上。但首先,只有 1 个蓝盒子!:D

有任何想法吗?我觉得这要么很简单,要么我缺少一些“千篇一律”的代码。非常感激!

4

3 回答 3

7

您现在可以查看示例。它刚刚签入到我们的存储库中,因此您需要使用 SVN 来获取它(或等到我们发布 2010 年 2 月的版本):

http://code.google.com/p/slimdx/source/detail?r=1356

于 2010-02-12T17:47:06.580 回答
0

我最近在搞乱 D3DImage 和 SlimDX 并没有发现让它工作太难(使用 DirextX9)。我的家用电脑上有一些代码,稍后会发布,但它与提供的链接中的代码非常相似。

不过,我永远无法让它与更高版本的 directx 一起工作。Jeremiah 有一篇不错的博客文章,介绍了使用 directx9 设备作为 directx 10/11/d2d 和 D3DImage 之间的链接,但我无法让它与 Slimdx 一起使用。尽管directx9 完成了我需要它做的事情并且我有点希望它能够在XP 上运行,但我并没有付出太多努力。

于 2010-02-12T16:16:07.167 回答
0

D3DImage 是您要使用的类。尽管 codeproject 教程是 C++,但它非常适用于 SlimDX 和 WPF。

您对 SlimDX 所要做的就是正常运行您的代码,但不要在您的设备或交换链上运行 Present(...)。在放置 Present(...) 的地方,执行 D3DImage.SetBackBuffer(...) 并将 SlimDX 表面的 ComPointer 属性发送给它。然后执行 D3DImage.AddDirect(...),您现在已经在 WPF 中合成了 D3D。

另外,请确保您创建了一个 IDirect3DDevice9Ex,否则您的性能在 XP 之外的任何设备上都会很糟糕!

于 2010-02-11T21:06:11.870 回答