我正在使用D3D
Image编写视频应用程序.帧来自内存并使用DirectX9在本机代码中呈现为纹理,最终由D3DImage暴露给WPF GUI.我在顶部有一些叠加,用WPF的绘画框架(文字,形状等)创建.到目前为止,它就像一个魅力.
现在,我想从我的底层本机C代码编码合成图像.视频为640×480 BGR,25 FPS,并且必须并行渲染和编码,也适用于
Windows版本低至XP / SP3的旧硬件.
问题是,我找不到任何描述WPF和D3DImage之间合成过程的文档.它们在某种意义上“混合”,但这是什么意思?是否有可能获得WPF绘图的一部分,甚至是我原生C代码中的合成图像?
p.s:我也对托管解决方案持开放态度,但到目前为止还没有找到很多表现.
最佳答案 有一个名为“CompositionTarget.Rendering”的全局静态方法.添加一个事件,每次WPF呈现该方法将在WPF出现之前调用(尽管FPS可能会有所不同).所以只需相应地更新你的renderTarget.
可能有更好的方法,但我不知道.
注意::对于WindowsXP上的D3DImage,您使用带有可锁定renderTarget的D3D9设备,而在Vista / 7上,您使用带有不可锁定renderTarget的D3D9Ex设备.只是一张纸条.