Share via


Mode exclusif DirectDraw

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Notes

Cette rubrique s’applique uniquement à VMR-7. Dans VMR-9, vous activez le mode exclusif en fournissant votre propre mode exclusif allocator-presenter. Cela est relativement simple si vous utilisez la méthode IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper . L’exemple VMR9Allocator montre comment implémenter un présentateur d’allocator personnalisé.

 

En mode exclusif DirectDraw, une application prend le contrôle exclusif du matériel graphique. Cela est utile pour des applications telles que des jeux ou peut-être des applications vidéo en plein écran. Normalement, le VMR crée les objets DirectDraw et définit le niveau de coopération sur normal. Toutefois, pour exécuter le VMR en mode exclusif DirectDraw, l’application elle-même doit créer l’objet DirectDraw et la surface primaire, puis appeler SetCooperativeLevel pour spécifier le mode exclusif.

Le VMR dispose d’un présentateur-allocator spécial qui lui permet de s’exécuter en mode exclusif DirectDraw. Pour configurer vmr afin d’utiliser cet allocator-presenter :

  1. Créez le graphe de filtre et ajoutez-y le VMR à l’aide de la méthode IFilterGraph::AddFilter . Pour obtenir un exemple de code, consultez Mode sans fenêtre VMR.

  2. Créez l’allocator-presenter en mode exclusif :

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. Configurez le nouvel allocator-presenter :

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. Branchez le nouvel allocator-presenter dans le VMR.

  5. Générez le reste du graphique de filtres de la manière habituelle.

Modes d’opération VMR