使用 DX10 的 D3D 图像
是否可以将 DirectX 10(我正在使用 SlimDX)与 WPF 的 D3DImage 一起使用? 我能找到的唯一示例和文档仅显示使用 DX9 表面。
Is it possible to use DirectX 10 (I am using SlimDX) with WPF's D3DImage? The only examples and docs I can find only show using DX9 surfaces.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,您可以在 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
Microsoft 代码包包含 Windows 7 组件的瘦托管包装器,包括 DX9、DX10、DX11 和 DirectWrite,以及 Windows 7 中的各种其他非托管库。SurfaceQueueInteropHelper
是一个 WPF 控件,用于管理自动创建 DX9、 WPF 中的 10 和 11 上下文以及管理 D3DImage 更新和渲染系统的各个其他方面(包括设备丢失事件)。
Yes, you can use DirectX 10, 11, and DirectWrite using the D3DImage in WPF by creating your render target surface as shared, and then creating a DX9 texture based on that shared texture handle to use in WPF.
This means that essentially you can use 10, 11, and DirectWrite the same way you use DX9 with no additional overhead, and no airspace issues.
A sample WPF project with DX9, DX10, DX11, and DirectWrite integration can be found referenced in this blog post here:
http://blogs.windowsclient.net/rob_relyea/archive/2010/04/30/gizmodo-posts-wpf-direct2d-sample-wow.aspx
The Microsoft Code Pack contains a thin managed wrapper for Windows 7 components including DX9, DX10, DX11 and DirectWrite in addition to various other unmanaged libraries in Windows 7.
The SurfaceQueueInteropHelper is a WPF control that manages automatically creating DX9, 10, and 11 contexts in WPF and managing D3DImage updating and various other aspects of the rendering system including device lost events.
据我所知,还没有开箱即用。 WPF 基于 DirectX,但由于 Windows XP 也支持 WPF,因此它基于 DirectX 9。
我确实知道可以将 DirectX 10 与 WPF 一起使用,但这样您的应用程序将无法在 XP 上运行。
有一个名为 Bling 的 WPF 库,它支持 DirectX 10(在 Vista 和 Windows 7 上),您可能会对它感兴趣。 您可以在此处找到它。 但我不知道它成熟到什么程度。
另外,我遇到了此博客(主要是法语),他谈论了将 DirectX 10 与 WPF 结合使用。
最后,CodeProject 上有一篇关于将 D3DImage 与 DirectX 结合使用的精彩介绍
我知道这一点并没有完全回答你的问题,但我想我还是会与你分享。 祝你好运。
Not out of the box as far as I know. WPF is based on DirectX, but as WPF is also supported on Windows XP it's based on DirectX 9.
I do know that it's possible to use DirectX 10 with WPF, but then your application won't be able to run on XP.
There's a library for WPF called Bling which supports DirectX 10 (on Vista and Windows 7) which might be of interest to you. You can find it here. I don't know how mature it is though.
Also, I ran into this blog (mostly in french) who speaks about using DirectX 10 with WPF.
Lastly there's a good introduction to using D3DImage with DirectX over at CodeProject
I know this doesn't exactly answer your question, but I thought I'd share it with you anyways. Best of luck.
如果您愿意使用 SlimDX 进行 DirectX 调用,您可以尝试 SlimDXControl (slimdxcontrol.codeplex.com)——它是我编写的 WPF 内容控件,明确仅支持 D3D10 而不是 '9。
-mpg
If you're willing to use SlimDX for the DirectX calls, you can try SlimDXControl (slimdxcontrol.codeplex.com) -- it is a WPF content control I wrote which explicitly only supports D3D10 instead of '9.
-mpg