Монопольный режим DirectDraw
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Заметка
Этот раздел относится только к VMR-7. В VMR-9 можно включить монопольный режим, предоставив собственный монопольный режим allocator-докладчика. Это относительно просто, если вы используете метод IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper. В примере VMR9Allocator показано, как реализовать настраиваемого докладчика-распределителя.
В монопольном режиме DirectDraw приложение управляет графическим оборудованием. Это полезно для таких приложений, как игры или, возможно, полноэкранные видео приложения. Как правило, VMR создает объекты DirectDraw и устанавливает общий уровень в нормальном режиме. Однако для запуска VMR в режиме directDraw Exclusive, само приложение должно создать объект DirectDraw и основную поверхность, а также вызвать SetCooperativeLevel, чтобы указать монопольный режим.
VmR имеет специальный выступающий распределитель, который позволяет запускать его в монопольном режиме DirectDraw. Чтобы настроить виртуальную машину для использования этого докладчика-распределителя, выполните следующие действия.
Создайте граф фильтра и добавьте в нее виртуальную машину с помощью метода IFilterGraph::AddFilter. Пример кода см. в режиме без окон vmR.
Создайте выступающий в монопольном режиме:
IVMRImagePresenterExclModeConfig* pExclModeConfig; CoCreateInstance( CLSID_AllocPresenterDDXclMode, NULL, CLSCTX_INPROC_SERVER, IID_IVMRImagePresenterExclModeConfig, (void**)&pExclModeConfig );
Настройте новый ведущий распределителя:
pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
Подключите новый ведущий распределителя к vmR.
Создайте остальную часть графа фильтров обычными способами.
Связанные разделы