Partager via


Mode exclusif DirectDraw

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans 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 capture audio/vidéo dans Media Foundation au lieu de directShow, lorsque cela est 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.]

Note

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

 

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

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

  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-présentateur en mode exclusif :

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

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. Branchez le nouvel allocator-présentateur dans vmR.

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

modes d’opération VMR