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 对象并将协作级别设置为 normal。 但是,若要在 DirectDraw 独占模式下运行 VMR,应用程序本身必须创建 DirectDraw 对象和主图面,并调用 SetCooperativeLevel 以指定独占模式。
VMR 具有特殊的分配器表示器,使它能够在 DirectDraw 独占模式下运行。 若要将 VMR 配置为使用此分配器-演示者,请执行以下操作:
创建 Filter Graph 并使用 IFilterGraph::AddFilter 方法向其添加 VMR。 有关代码示例,请参阅 VMR 无窗口模式。
创建独占模式分配器-演示者:
IVMRImagePresenterExclModeConfig* pExclModeConfig; CoCreateInstance( CLSID_AllocPresenterDDXclMode, NULL, CLSCTX_INPROC_SERVER, IID_IVMRImagePresenterExclModeConfig, (void**)&pExclModeConfig );
配置新的分配器-演示者:
pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
将新的分配器呈现器插入 VMR。
以常用方式生成筛选器图的其余部分。
相关主题