WPF-DirectX互操作问题(D3DImage)

时间:2011-01-29 18:38:49

标签: wpf interop directx direct3d

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

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

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

1 个答案:

答案 0 :(得分:2)

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

注意::对于WindowsXP上的D3DImage,您使用带有可锁定renderTarget的D3D9设备,而在Vista / 7上,您使用带有不可锁定renderTarget的D3D9Ex设备。只是一张便条。