WPF控件中的SlimDX视口

7
我正在从WinForms/XNA转向WPF/SlimDX,因为:
  • a) WPF比WinForms更具优势(但学习曲线陡峭!)
  • b) 我想要将多个SlimDX视口附加到面板上。XNA只有一个“游戏”屏幕。
  • 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中,我渲染了许多独立的RenderTarget,并将它们放置在屏幕上,现在我想将它们附加到控件上。但首先,只有一个蓝色框! :D

有什么想法吗?我觉得这要么很简单,要么缺少一些“模板”代码。非常感谢!


我们有一个在SlimDX中演示此功能的样例,但我不认为它已经提交到SVN代码库中了,而且我现在也联系不上拥有此样例的开发人员。这个问题有点含糊。您是在寻求特定设备错误的帮助吗?如果是,请发布相关错误信息。 - user197015
我可以看出这是一个含糊的问题。我并没有询问任何具体的错误,我主要是在寻找一种非常简单、高级别的解决方案来使用C#编写WPF/SlimDX程序。我似乎无法找到任何文档或者示例。 - bufferz
3个回答

7

1
Promit 实际上写了这个示例,不是我,但我会转达。 - user197015
2
有一份更新的版本,包含一些更新内容: http://code.google.com/p/slimdx/source/detail?r=1367 - Promit
谢谢,Promit。看起来我晚了一步才看到Josh的答案,最终还是用了r1367。我认为你们在这个例子中开创了新的领域。网络上关于替代方案的内容并不多。我必须提出我的0.02美元,以帮助那些(像我一样)可能不太熟悉SlimDX、WPF和良好的MVVM设计实践的人。这两个小改进对于新手来说会更快入门: - bufferz
设置一个简单的 UI 控件来与 SlimDX 控件交互。现在,可以通过左/右点击来改变蜥蜴的颜色。使用类似于 3 个滑块控制 RGB 色彩可以演示此功能。在 WpfWindow.xaml.cs 中添加如下代码:private void sliderRed_ValueChanged(...) { m_dataModel.Color.R= (int)sliderRed.Value; } - bufferz
虽然这些添加非常微不足道,但它们将有助于向初学者说明如何在原始作者设置的Window>SlimDXControl>DataModel层次结构上实现此类功能。再次感谢! - bufferz
显示剩余2条评论

0
D3DImage是您想要使用的类。即使codeproject教程是C++,它也非常适用于SlimDX和WPF。
您只需使用SlimDX正常运行代码,但不要在设备或交换链上运行Present(...)。在您放置Present(...)的位置,执行D3DImage.SetBackBuffer(...)并将您的SlimDX表面的ComPointer属性发送到其中。然后执行D3DImage.AddDirect(...),现在您已经在WPF中进行了D3D合成。
此外,请确保创建IDirect3DDevice9Ex,否则除XP外的任何性能都会很差!

0

最近我在玩D3DImage和SlimDX,发现使用DirectX9并不太难。我有一些代码在家里的电脑上,稍后会发布,但它与提供的链接中的代码非常相似。

然而,我从未能够让它在更高版本的DirectX上工作。Jeremiah有一篇很好的博客文章,介绍如何使用DirectX9设备作为DirectX 10/11/D2D和D3DImage之间的链接,但我无法让它与Slimdx一起工作。虽然我没有花费太多精力,因为DirectX9已经满足了我的需求,而且我也希望它能在XP上运行。


更新给其他人看:我可以使用SlimDX的2011年3月发布的DirectX 10版本轻松运行示例。 - J Trana

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