Partager via


Objets bitmap

Note

Pour les applications sur Windows 10, nous vous recommandons d’utiliser les API Windows.UI.Composition au lieu de DirectComposition. Pour plus d’informations, consultez Moderniser votre application de bureau à l’aide dude couche visuelle.

Microsoft DirectComposition est un moteur de composition bitmap. Il permet aux développeurs d’applications de combiner plusieurs bitmaps et de les manipuler de différentes façons pour obtenir des effets visuels et des animations intéressants dans une interface utilisateur d’application. Cette rubrique décrit les types de contenu bitmap pris en charge par DirectComposition.

Contenu bitmap

Les applications fournissent DirectComposition avec le contenu bitmap à composer et à animer en créant des objets visuels, puis en définissant la propriété Content de ces objets. DirectComposition n’offre aucun service de rastérisation. Une application doit utiliser d’autres bibliothèques de rastérisation logicielles ou matérielles accélérées, telles que Direct2D ou Direct3D pour remplir les bitmaps à composer. Après la composition, DirectComposition transmet le contenu bitmap composé à Desktop Window Manager (DWM) pour le rendu à l’écran.

Types de contenu bitmap pris en charge Microsoft DirectComposition prend en charge les types de bitmaps suivants :

Bitmaps de mémoire vidéo

Une bitmap de mémoire vidéo est ratérisée dans le matériel à l’aide de méthodes Microsoft DirectX (y compris le modèle d’interopérabilité DX-to-GDI). Il est soutenu par des surfaces partagées interprocessées qui sont visibles par l’application appelante et directComposition. Une bitmap de mémoire vidéo n’est pas soumise à la déchirure, car l’application ne peut lire qu’à partir des surfaces à partir des textures DirectComposition.

Contenu vidéo

Les applications peuvent utiliser DirectComposition pour composer des images vidéo qui utilisent des chaînes d’échange sans fenêtre DirectX liées à une surface DirectComposition. Conceptuellement, DirectComposition traite le contenu vidéo comme une séquence de bitmaps. DirectComposition ne fournit pas de moyens de présenter des images vidéo.

DirectComposition prend en charge les chaînes d’échange sans fenêtre DirectX( c’est-à-dire les chaînes d’échange qui ne sont pas liées à une fenêtre particulière) et permet à deux applications différentes de partager des chaînes d’échange sans fenêtre entre les limites du processus. Le partage de chaînes d’échange sans fenêtre permet des scénarios vidéo où la chaîne d’échange est créée dans un processus et utilisée avec DirectComposition dans un deuxième processus. Les chaînes d’échange sans fenêtre sont créées à l’aide de la méthode IDXGIFactory2 ::CreateSwapChainForCompositionSurface.

Pour plus d’informations sur les chaînes d’échange DirectX, consultez Vue d’ensemble de DXGI.

Contenu stéréo

Conceptuellement, une chaîne de permutation stéréo se compose de surfaces DXGI (Microsoft DirectX Graphics Infrastructure) qui représentent les canaux gauche et droit pour le contenu stéréo 3D. Lorsqu’une chaîne d’échange stéréo est utilisée comme ressource bitmap pour un visuel, DirectComposition compose en stéréo. Tout le contenu non stéréo (contenu mono) est considéré comme ayant un contenu de canal gauche et droit identique ; autrement dit, le même contenu bitmap est utilisé pour les deux canaux. DirectComposition compose tout le contenu gauche et tout le contenu droit séparément. Si l’appareil d’affichage n’est pas compatible stéréo, DirectComposition traite le canal stéréo gauche ou droit (selon l’application) en tant que contenu mono et compose uniquement ces données pour la ressource bitmap.

DirectComposition ne prend pas en charge la création ou la manipulation de contenu stéréo et ne peut pas promouvoir une chaîne d’échange mono vers une paire stéréo. Une application doit effectuer ces tâches avant de présenter du contenu stéréo DirectX à DirectComposition. En outre, une application doit fournir les décalages de canal gauche et droit pour la perception de profondeur ; DirectComposition ne peut pas ajuster les décalages de canal gauche et droit pour modifier la profondeur perçue du contenu stéréo DirectX.

Le contenu stéréo DirectX est composé et conservé dans DWM lorsque le matériel stéréo est disponible.

Bitmaps de fenêtre

Une « bitmap de fenêtre » n’est pas une image bitmap réelle, mais est un espace réservé que DirectComposition remplace en temps réel par des rastérisations de fenêtres de niveau supérieur ou enfants superposées. Une bitmap de fenêtre est similaire à une miniature DWM, sauf qu’une miniature peut contenir des contributions de nombreuses fenêtres, telles que des fenêtres non enfants, tandis qu’une bitmap de fenêtre DirectComposition est toujours une représentation d’une seule fenêtre et de ses enfants.

Étant donné que DirectComposition a accès aux surfaces de redirection de toutes les fenêtres et de toutes les arborescences visuelles, il peut réutiliser le contenu d’une fenêtre dans plusieurs arborescences visuelles. La fenêtre doit être superposée, car une fenêtre non superposée n’a pas de surface de redirection dédiée et, par conséquent, sa rastérisation n’est pas toujours disponible pour DirectComposition.

Pour utiliser une bitmap de fenêtre, une application associe un visuel à un handle de fenêtre (HWND). Par la suite, DirectComposition réécrit le visuel chaque fois que le contenu de la fenêtre change, y compris lorsque le contenu change en raison des modifications apportées aux arborescences visuelles associées à la fenêtre. En d’autres termes, comme les miniatures DWM, les bitmaps de fenêtre DirectComposition sont « actives ».

Association de contenu bitmap à un visuel

Pour les trois types de bitmaps, une application peut associer la même bitmap à plusieurs visuels, ce qui signifie qu’une allocation de mémoire unique peut être utilisée pour afficher le même contenu plusieurs fois.

Canal alpha

Toutes les bitmaps ont un format BPP (32 bits par pixel), qui inclut huit bits pour la transparence par pixel. Toutefois, une application peut spécifier la façon dont DirectComposition doit consommer le canal alpha. En particulier, DirectComposition peut respecter le canal alpha, ou il peut ignorer complètement alpha, auquel cas la bitmap est considérée comme entièrement opaque.

Un mode alpha supplémentaire ignore le canal alpha, mais traite les valeurs rouges, vertes et bleues comme des valeurs alpha par canal au lieu de l’interprétation normale de ces canaux comme des intensités de couleur. Ce mode est utile pour le rendu ClearType, qui nécessite des informations de couverture de sous-pixels. Pour utiliser le mode alpha par canal, une application doit d’abord utiliser Direct2D et DirectWrite pour écrire des données de couverture de sous-pixels dans une bitmap. Ensuite, l’application doit définir le mode alpha correct et spécifier une couleur de texte lorsqu’elle associe la bitmap à un visuel. DirectComposition fusionne la couleur du texte avec les données de couverture, ce qui produit un mélange ClearType sur l’arrière-plan.

Dans les situations où l’algorithme ClearType n’est pas applicable, par exemple si la bitmap n’est pas alignée en pixels et alignée sur l’axe, ou si elle doit être dessinée sur une surface intermédiaire, DirectComposition peut utiliser les données de couverture de sous-pixel dans la bitmap pour produire une rastérisation de nuances de gris à la place, automatiquement et sans coût supplémentaire.

Pour plus d’informations, consultez la description du paramètre alphaMode de la fonction IDCompositionDevice ::CreateSurface ou IDCompositionDevice ::CreateVirtualSurface function.

concepts DirectComposition