Compartilhar via


Modo Exclusivo do DirectDraw

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Observação

Este tópico se aplica somente à VMR-7. Na VMR-9, você habilita o modo exclusivo fornecendo seu próprio alocador-apresentador de modo exclusivo. Isso será relativamente simples se você usar o método IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper . O exemplo VMR9Allocator mostra como implementar um alocador-apresentador personalizado.

 

No Modo Exclusivo do DirectDraw, um aplicativo assume o controle exclusivo do hardware gráfico. Isso é útil para aplicativos como jogos ou, talvez, aplicativos de vídeo em tela inteira. Normalmente, a VMR cria os objetos DirectDraw e define o nível cooperativo como normal. No entanto, para executar a VMR no Modo Exclusivo do DirectDraw, o próprio aplicativo deve criar o objeto DirectDraw e a superfície primária e chamar SetCooperativeLevel para especificar o modo exclusivo.

A VMR tem um alocador-apresentador especial que permite que ele seja executado no Modo Exclusivo DirectDraw. Para configurar a VMR para usar este alocador-apresentador:

  1. Crie o Gráfico de Filtro e adicione a VMR a ele usando o método IFilterGraph::AddFilter . Para obter um exemplo de código, consulte Modo sem janelas da VMR.

  2. Crie o alocador-apresentador do Modo Exclusivo:

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. Configure o novo alocador-apresentador:

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. Conecte o novo alocador-apresentador à VMR.

  5. Crie o restante do grafo de filtro das maneiras usuais.

Modos de operação de VMR