小编dec*_*ime的帖子

从WPF的内部渲染到Directx应用程序

我有一个WPF应用程序,用于在实时流中覆盖HUD.最初的想法是为xsplit(一种用于呈现实时流的流行应用程序)创建一个插件,以显示WPF应用程序的内容.这种方法的问题在于,向xsplit的COM接口渲染位图对于释放应用程序的CPU性能造成很大损害(我相信在xsplit的COM接口中存在问题以及使用RenderTargetBitmap对CPU征税).

我一直在寻找将叠加层直接渲染到游戏中(目标DirectX应用程序),因为它提供了许多好处.主要是它规避了xsplit中的性能问题,但也打开了应用程序,直到各种流和捕获应用程序.


我对DirectX不是很有经验,但我认为这是解决方案的大纲

  1. 初始化WPF应用程序并捕获WPF的Direct3d设备(通过此方法)

  2. 查找并挂钩目标DirectX应用程序的EndScene调用(使用EasyHook + Slimdx)

  3. 在钩住的DirectX应用程序的顶部渲染WPF设备表面的内容


我的主要问题是如何使用SlimDX完成第3步.我希望解决方案可以某种方式重用表面而不依赖于复制,因为目标是不影响钩子应用程序的性能.我也希望能够限制区域并支持透明度.我也想知道在钩住的DirectX应用程序的设备中使用WPF的Direct3d设备是否会导致任何不稳定.

任何见解都将不胜感激,谢谢.

directx wpf overlay code-injection slimdx

8
推荐指数
1
解决办法
2065
查看次数

标签 统计

code-injection ×1

directx ×1

overlay ×1

slimdx ×1

wpf ×1