WPF控件中的SlimDX视口

时间:2010-02-11 17:46:30

标签: c# wpf slimdx

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

  • a)WPF的所有好处 WinForms(但学习曲线=哎哟!)
  • b)我想有多个 附加到Panels的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代码。

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

有什么想法吗?我觉得这要么简单,要么就是我缺少一些“千篇一律”的代码。非常感谢!

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

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

所有与SlimDX有关的都是正常运行代码,但不要在您的设备或交换链上运行Present(...)。在您放置Present(...)的位置,执行D3DImage.SetBackBuffer(...)并将SlimDX曲面的ComPointer属性发送给它。然后执行D3DImage.AddDirect(...),您现在可以在WPF中合成D3D。

此外,请确保您创建了IDirect3DDevice9Ex,否则您的性能在XP以外的任何地方都会很糟糕!

答案 2 :(得分:0)

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

我从来没有能够使用更高版本的directx。关于使用directx9设备作为directx 10/11 / d2d和D3DImage之间的链接,Jeremiah有一个很好的blog post,但我无法使用Slimdx。我并没有付出太多努力,因为directx9做了我需要它做的事情,我有点想让它在XP上工作。