我正在编写一个使用D3DImage的视频应用程序。帧来自内存,并使用DirectX9在本机代码中呈现为纹理,最后由D3DImage公开给WPF GUI。我在顶部有一些覆盖,用WPF的绘画框架(文本,形状等)创建。到目前为止,它就像一个护身符。现在,我想用我的底层原生C++代码对合成图像进行编码。视频是640x480BGR,25FPS,必须并行渲染和编码,也是在Windows版本低至XP/SP3的旧硬件上。
问题是,我找不到任何文档来描述WPF和D3DImage之间的组合过程。它们在某种意义上“融合”,但这是什么意思呢?是否有可能在我的原生C++代码中获得图形的WPF部分甚至合成图像的句柄?
附言:我也对托管解决方案持开放态度,但到目前为止还没有发现太多的性能。
发布于 2011-02-03 07:35:52
有一个叫做"CompositionTarget.Rendering“的全局静态方法。添加一个事件,每次WPF呈现该方法时,都会在WPF呈现之前调用该方法( FPS可能会有所不同)。所以只需相应地更新您的renderTarget即可。也许有更好的方法,但我不知道。
注意:对于WindowsXP上的D3DImage,您可以使用带有可锁定renderTarget的D3D9设备,而在Vista/7上,您可以使用带有不可锁定renderTarget的D3D9Ex设备。只是一张纸条。
https://stackoverflow.com/questions/4838705
复制相似问题