WPF 与 XNA 在现实生活中的融合效果如何?
题
据我所知,有多种方法可以在同一应用程序中混合 XNA 和 WPF。我发现在我的 XNA 游戏中使用 WPF 来处理所有 GUI 和 HUD 内容很有吸引力。有谁对这种方法在现实生活中使用 .NET 3.5 SP1 的效果有任何实际经验吗?任何陷阱(例如 “空域问题”)?关于什么方法最有效的任何提示?
解决方案
3.5 SP1 中添加了一项功能,允许 DirectX 和 WPF (D3DImage) 之间进行更好的交互,实现该功能的一种方法是通过 XNA。
以下是一些细节:
http://jmorrill.hjtcentral.com/Default.aspx?tabid=428&EntryID=259
其他提示
Thamir Khason 在 Tech-ed 上发表了一场关于 WPF/XNA/Silverlight 的精彩会议...这是他的幻灯片:http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/14/my-teched-08-presentation-slides-download.aspx
附言。这真是令人印象深刻......他有一款在 Xbox 上运行的游戏。在他的桌面上使用 WPF 托管 XNA,在他的手机上使用 silverlight 互相对抗!
您想要使用 D3DImage,但 D3DImage 在 Windows XP 与 Windows Vista 或 7 上的工作方式不同。
在 Vista 或 7 上,您创建一个不可锁定的 renderTarget 来与 D3DImage 一起使用,并且使用 Direct3D9EX 设备。在 XP 上,您创建一个可锁定的 renderTarget 以与 D3DImage 一起使用并使用普通的 Direct3D9 设备。
另外,如果您只是为 PC 制作这个,那么使用 XNA 可能会更好,使用 SlimDX 可能会更好。SlimDX 不缺乏任何 Direct3D 功能并支持 Direct3D 9、10 和 11。
我个人建议不要尝试进行这种集成。我知道你要做什么...在 WPF 中定义 GUI/HUD 元素的简便性大大超过了在普通的旧 XNA 中定义 GUI/HUD 元素的难度。但是,请现实地考虑一下您将花费在尝试启用此场景与其他场景上的时间。如果您只是在 XNA 中“本地”完成所有操作,您会节省多少钱。另外(这对您来说可能不是问题),xbox 或 zune 不支持 WPF ...所以你会限制自己:-)
嘿,我知道这是您发布后一段时间,但如果您仍在寻找 XNA 的 WPF 解决方案,您可能需要关注 http://red-badger.com/product. 。XPF 解决方案将 wpf 放入 XNA 中。所以看一下,目前它是免费的,因为它处于测试阶段,但随着他们添加更多组件,这种情况将会改变