D3DImage使用DX10

9

我正在使用SlimDX,想知道是否可以在WPF的D3DImage中使用DirectX 10?我能找到的唯一示例和文档只展示了如何使用DX9表面。

3个回答

7

是的,您可以使用D3DImage在WPF中使用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

Microsoft代码包包含Windows 7组件的薄型托管包装器,包括DX9、DX10、DX11和DirectWrite,以及Windows 7中的各种其他非托管库。

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


3
看起来链接现在已经失效了 :( - Antony Woods

2
据我所知,WPF本身不支持DirectX 10。虽然WPF基于DirectX,但由于WPF也支持Windows XP,因此它是基于DirectX 9的。
我知道可以使用DirectX 10与WPF一起使用,但这样你的应用程序将无法在XP上运行。
有一个名为Bling的WPF库支持DirectX 10(在Vista和Windows 7上),可能会对您有兴趣。您可以在此处找到它。不过我不知道它有多成熟。
此外,我发现了这个博客(大部分是法语),讲述了如何在WPF中使用DirectX 10。
最后,在CodeProject网站上有一篇关于使用D3DImage和DirectX的入门介绍,点击此处查看。
虽然这并没有直接回答您的问题,但我还是想与您分享。祝你好运。

1
如果您愿意使用SlimDX进行DirectX调用,您可以尝试SlimDXControl(slimdxcontrol.codeplex.com)- 这是我编写的一个仅明确支持D3D10而不是“9”的WPF内容控件。
-mpg

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