近来看DirectX 9.0文档,越来越觉得它功能的强大。结合目前解决的一个问题: 即采集多个视频源的一帧到一张位图。它需要用到DirectX中的VMR。
VMR是新一代的video renderer,全称为Video Mixing Renderer,它分为VMR7和VMR9,VMR7基于DirectDraw7,只限于Windows XP;VMR9基于Direct3D9。因为我的例子可能会用于Windows 2000,所以我采用了可用于所有支持DirectX平台的VMR9。
VMR9可以使用3种工作模式,分别为windowed,windowless,renderless模式。后两种模式多用于游戏中。测试例子中用的是windowless模式。
先看下程序实现的截图和graph图:


下面开始具体的程序实现:
视频设备的枚举在我的简化MFC版amcp中有过描述,这里主要是VMR9的创建与设定。
另外生成graph的方法如连接PINs也是采用简化MFC版amcp中描述的Capture Graph Builder中的方法。 <