DirectDraw 独占模式
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]
注意
本主题仅适用于 VMR-7。 在 VMR-9 中,通过提供自己的独占模式分配器演示器来启用独占模式。 如果使用 IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper 方法,则此方法相对简单。 VMR9Allocator 示例演示如何实现自定义分配器演示器。
在 DirectDraw 独占模式下,应用程序将独占控制图形硬件。 这对于游戏或全屏视频应用程序等应用程序非常有用。 通常,VMR 将创建 DirectDraw 对象并将协作级别设置为正常。 但是,若要在 DirectDraw 独占模式下运行 VMR,应用程序本身必须创建 DirectDraw 对象和主图面,并调用 SetCooperativeLevel 以指定独占模式。
VMR 具有特殊的分配器演示器,使它能够在 DirectDraw 独占模式下运行。 若要将 VMR 配置为使用此分配器演示器:
使用 IFilterGraph::AddFilter 方法创建 Filter Graph 并将 VMR 添加到其中。 有关代码示例,请参阅 VMR 无窗口模式。
创建独占模式分配器演示者:
IVMRImagePresenterExclModeConfig* pExclModeConfig; CoCreateInstance( CLSID_AllocPresenterDDXclMode, NULL, CLSCTX_INPROC_SERVER, IID_IVMRImagePresenterExclModeConfig, (void**)&pExclModeConfig );
配置新的分配器演示者:
pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
将新的分配器演示者插入 VMR。
以通常的方式构建筛选器图的其余部分。
相关主题