2011-01-29 76 views
4

我正在写一个利用D3DImage的视频应用程序。帧来自内存,并以DirectX9本机代码的纹理形式呈现,最终由D3DImage向WPF GUI展示。我有一些覆盖顶部,用WPF的绘画框架(文字,形状等)创建。到目前为止,它就像一个魅力。 现在,我想从我的底层原生C++代码中对合成图像进行编码。视频是640x480 BGR,25 FPS,并且必须在Windows版本低至XP/SP3的旧硬件上同时进行渲染和编码。WPF-DirectX互操作问题(D3DImage)

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

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

回答

2

有一种叫做“CompositionTarget.Rendering”的全局静态方法。向WPF添加一个事件,每次WPF呈现该方法将在WPF呈现之前调用(但FPS可以改变)。所以刚刚更新了你的renderTarget。 可能有更好的方法,但我不知道它。

备注::对于WindowsXP上的D3DImage,您还可以使用具有可锁定renderTarget的D3D9设备,而在Vista/7上使用具有不可锁定renderTarget的D3D9Ex设备。只是一个笔记。