【问题标题】:WPF-DirectX Interop Problem (D3DImage)WPF-DirectX 互操作问题 (D3DImage)
【发布时间】:2011-01-29 18:38:48
【问题描述】:

我正在使用 D3DImage 编写视频应用程序。帧来自内存并使用 DirectX9 在本机代码中呈现为纹理,最终由 D3DImage 公开给 WPF GUI。我在上面有一些叠加层,是用 WPF 的绘画框架(文本、形状等)创建的。到目前为止,它就像一个魅力。 现在,我想从我的底层原生 C++ 代码中对合成图像进行编码。视频为 640x480 BGR,25 FPS,并且必须在 Windows 版本低至 XP/SP3 的旧硬件上并行渲染和编码。

问题是,我找不到任何描述 WPF 和 D3DImage 之间的合成过程的文档。它们在某种意义上“混合”,但这是什么意思?是否有可能在我的本机 C++ 代码中获取 WPF 的绘图部分甚至合成图像的句柄?

p.s:我也对托管解决方案持开放态度,但到目前为止还没有发现太多性能。

【问题讨论】:

    标签: wpf interop directx direct3d


    【解决方案1】:

    有一个名为“CompositionTarget.Rendering”的全局静态方法。向其中添加一个事件,每次 WPF 呈现该方法时,都会在 WPF 呈现之前调用该方法(尽管 FPS 可能会有所不同)。因此,只需相应地更新您的 renderTarget 即可。 可能有更好的方法,但我不知道。

    注意:: 同样对于 WindowsXP 上的 D3DImage,您使用带有可锁定渲染目标的 D3D9 设备,而在 Vista/7 上您使用带有不可锁定渲染目标的 D3D9Ex 设备。只是一个注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多