DirectShow使用心得
用了3天时间,将DShow加入到了游戏中,记录下心得,方便要使用的童鞋以及以后的自己查看。
1. Video Mixing Renderer 9,内部使用Direct3D 9,需要Windows XP或更高的操作系统。游戏用户基本100%满足这个条件,因此我选择它作为过滤器。
2. Video Mixing Renderer 9 支持的渲染模式为Windowed, Windowless以及Renderless。推荐使用Windowless,这样就不需要像使用Windowed那样用IVideoWindow来设置Windows消息流向,绑定父窗口等等。但是,必须对WM_PAINT, WM_DISPLAYCHANG以及WM_SIZE(或WM_WINDOWPOSCHANGED)进行处理。
3. Video Mixing Renderer 9不支持真全屏,也就是D3D独占模式(在我使用的过程中,独占模式只有声音,没有图像)。一种解决方案是使用Renderless渲染模式,但是需要自己写图像过滤器。另一种方案就是在播放视频时使用伪全屏,之后再切换到真全屏。
4. 在真全屏时我尝试使用Windowed模式来创建一个伪全屏窗口,在单显示器的情况下,这种方案可以工作。但在多显示器的情况下,当焦点切换到另一个显示器时,视频窗口会被自动调整,导致不再是伪全屏。
1. Video Mixing Renderer 9,内部使用Direct3D 9,需要Windows XP或更高的操作系统。游戏用户基本100%满足这个条件,因此我选择它作为过滤器。
2. Video Mixing Renderer 9 支持的渲染模式为Windowed, Windowless以及Renderless。推荐使用Windowless,这样就不需要像使用Windowed那样用IVideoWindow来设置Windows消息流向,绑定父窗口等等。但是,必须对WM_PAINT, WM_DISPLAYCHANG以及WM_SIZE(或WM_WINDOWPOSCHANGED)进行处理。
3. Video Mixing Renderer 9不支持真全屏,也就是D3D独占模式(在我使用的过程中,独占模式只有声音,没有图像)。一种解决方案是使用Renderless渲染模式,但是需要自己写图像过滤器。另一种方案就是在播放视频时使用伪全屏,之后再切换到真全屏。
4. 在真全屏时我尝试使用Windowed模式来创建一个伪全屏窗口,在单显示器的情况下,这种方案可以工作。但在多显示器的情况下,当焦点切换到另一个显示器时,视频窗口会被自动调整,导致不再是伪全屏。