9

是否可以将 DirectX 10(我正在使用 SlimDX)与 WPF 的 D3DImage 一起使用?我能找到的唯一示例和文档仅显示使用 DX9 表面。

4

3 回答 3

8

是的,您可以通过在 WPF 中使用 D3DImage 来使用 DirectX 10、11 和 DirectWrite,方法是将渲染目标表面创建为共享,然后基于该共享纹理句柄创建 DX9 纹理以在 WPF 中使用。

这意味着您基本上可以像使用 DX9 一样使用 10、11 和 DirectWrite,而无需额外开销,也不会出现空域问题。

可以在此博客文章中找到一个具有 DX9、DX10、DX11 和 DirectWrite 集成的示例 WPF 项目:

http://blogs.windowsclient.net/rob_relyea/archive/2010/04/30/gizmodo-posts-wpf-direct2d-sample-wow.aspx

除了 Windows 7 中的各种其他非托管库外,Microsoft 代码包还包含一个用于 Windows 7 组件(包括 DX9、DX10、DX11 和 DirectWrite)的瘦托管包装器。

SurfaceQueueInteropHelper 是一个 WPF 控件,用于管理在 WPF 中自动创建 DX9、10 和 11 上下文,并管理 D3DImage 更新和渲染系统的各个其他方面,包括设备丢失事件。

于 2010-05-07T04:52:17.163 回答
2

据我所知,不是开箱即用。WPF 基于 DirectX,但由于 Windows XP 也支持 WPF,因此它基于 DirectX 9。

我知道可以将 DirectX 10 与 WPF 一起使用,但是您的应用程序将无法在 XP 上运行。

有一个名为 Bling 的 WPF 库,它支持 DirectX 10(在 Vista 和 Windows 7 上),您可能会感兴趣。你可以在这里找到它。虽然不知道成熟到什么程度。

另外,我遇​​到了这个博客(主要是法语),他谈到了将 DirectX 10 与 WPF 结合使用。

最后,在 CodeProject 上对使用 D3DImage 和 DirectX 进行了很好的介绍

我知道这并不能完全回答您的问题,但我想无论如何我都会与您分享。祝你好运。

于 2009-08-14T23:00:59.537 回答
1

如果您愿意将 SlimDX 用于 DirectX 调用,您可以尝试 SlimDXControl (slimdxcontrol.codeplex.com)——它是我编写的 WPF 内容控件,它明确地只支持 D3D10 而不是 '9。

-mpg

于 2011-02-02T21:32:20.403 回答