Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nuta
W przypadku aplikacji w systemie Windows 10 zalecamy używanie interfejsów API Windows.UI.Composition zamiast directComposition. Aby uzyskać więcej informacji, zobacz Modernizuj aplikację klasyczną przy użyciu warstwy wizualnej.
Microsoft DirectComposition to aparat tworzenia map bitowych. Umożliwia deweloperom aplikacji łączenie wielu map bitowych i manipulowanie nimi na różne sposoby w celu uzyskania interesujących efektów wizualnych i animacji w interfejsie użytkownika aplikacji. W tym temacie opisano typy zawartości mapy bitowej obsługiwanej przez funkcję DirectComposition.
-
zawartość mapy bitowej
- mapy bitowe pamięci wideo
- mapy bitowe okna
- kojarzenie zawartości mapy bitowej z wizualizacją
- kanału Alpha
- Tematy pokrewne
Zawartość mapy bitowej
Aplikacje udostępniają zawartość mapy bitowej DirectComposition do tworzenia i animowania, tworząc obiekty wizualne, a następnie ustawiając właściwość Content tych obiektów. Funkcja DirectComposition nie oferuje żadnych usług rasteryzacji. Aplikacja musi używać innej biblioteki rasteryzacji opartej na oprogramowaniu lub przyspieszonej sprzętowo, takiej jak Direct2D lub Direct3D, aby wypełnić mapy bitowe, które mają być skomponowane. Po skomponowaniu funkcja DirectComposition przekazuje skomponowaną zawartość mapy bitowej do Desktop Window Manager (DWM) renderowania na ekranie.
Obsługiwane typy zawartości mapy bitowej Microsoft DirectComposition obsługuje następujące rodzaje map bitowych:
Mapy bitowe pamięci wideo
Mapa bitowa pamięci wideo jest rasteryzowana na sprzęcie przy użyciu metod Microsoft DirectX (w tym modelu międzyoperacyjnych DX-to-GDI). Jest on wspierany przez współużytkowane powierzchnie między procesami, które są widoczne dla aplikacji wywołującej i directComposition. Mapa bitowa pamięci wideo nie podlega rozerwaniu, ponieważ aplikacja może odczytywać tylko z powierzchni, z których tekstury DirectComposition pochodzą.
Zawartość wideo
Aplikacje mogą używać funkcji DirectComposition do tworzenia ramek wideo korzystających z łańcuchów wymiany bez okien DirectX powiązanych z powierzchnią DirectComposition. Koncepcyjnie DirectComposition traktuje zawartość wideo jako sekwencję map bitowych. Funkcja DirectComposition nie zapewnia sposobu prezentowania klatek wideo.
DirectComposition obsługuje łańcuchy wymiany bez okien DirectX — czyli łańcuchy wymiany, które nie są powiązane z określonym oknem — i umożliwia dwóm różnym aplikacjom udostępnianie łańcuchów wymiany bez okien w granicach procesów. Udostępnianie łańcuchów wymiany okien umożliwia scenariusze wideo, w których łańcuch wymiany jest tworzony w jednym procesie i jest używany z funkcją DirectComposition w drugim procesie. Łańcuchy wymiany bez okien są tworzone przy użyciu metodyIDXGIFactory2::CreateSwapChainForCompositionSurface.
Aby uzyskać więcej informacji na temat łańcuchów wymiany DirectX, zobacz omówienie DXGI.
Zawartość stereo
Koncepcyjnie łańcuch wymiany stereo składa się z powierzchni infrastruktury grafiki Microsoft DirectX (DXGI), które reprezentują lewe i prawe kanały dla zawartości 3D stereo. Gdy łańcuch wymiany stereo jest używany jako zasób mapy bitowej dla wizualizacji, directCompozycja komponuje się w stereo. Cała zawartość nie stereo (zawartość mono) jest uważana za identyczną zawartość kanału po lewej i prawej stronie; oznacza to, że ta sama zawartość mapy bitowej jest używana dla obu kanałów. Funkcja DirectCompozycja komponuje całą zawartość po lewej i całej prawej zawartości oddzielnie. Jeśli urządzenie wyświetlające nie jest w stanie stereo, funkcja DirectComposition traktuje lewy lub prawy kanał stereo (w zależności od aplikacji) jako zawartość mono i komponuje tylko te dane dla zasobu mapy bitowej.
Funkcja DirectComposition nie obsługuje tworzenia lub manipulowania zawartością stereo i nie może promować łańcucha wymiany mono do pary stereo. Aplikacja musi wykonać te zadania przed przedstawieniem zawartości stereo DirectX do funkcji DirectComposition. Ponadto aplikacja musi zapewnić przesunięcie lewego i prawego kanału na potrzeby percepcji głębokości; Funkcja DirectComposition nie może dostosować przesunięcia lewego i prawego kanału w celu zmodyfikowania postrzeganej głębokości zawartości stereo DirectX.
Zawartość stereo DirectX jest komponowana i utrwalana w usłudze DWM, gdy jest dostępny sprzęt z obsługą stereo.
Mapy bitowe okien
"Mapa bitowa okna" nie jest prawdziwą mapą bitową, ale jest symbolem zastępczym, który DirectComposition zastępuje w czasie rzeczywistym rasteryzacją warstwowych okien najwyższego poziomu lub okien podrzędnych. Mapa bitowa okna jest podobna do miniatury DWM, z tą różnicą, że miniatura może zawierać wkład wielu okien, takich jak okna nienależące do dzieci, natomiast mapa bitowa okna DirectComposition jest zawsze reprezentacją tylko jednego okna i jego elementów podrzędnych.
Ponieważ funkcja DirectComposition ma dostęp do powierzchni przekierowania wszystkich okien i wszystkich drzew wizualnych, może ponownie używać zawartości z jednego okna w wielu drzewach wizualnych. Okno musi być warstwowe, ponieważ niewarstwowe okno nie ma dedykowanej powierzchni przekierowania i dlatego jego rasteryzacja nie zawsze jest dostępna dla DirectComposition.
Aby użyć mapy bitowej okna, aplikacja kojarzy wizualizację z uchwytem okna (HWND). Następnie funkcja DirectComposition ponownie komponuje wizualizację za każdym razem, gdy zawartość okna ulegnie zmianie, w tym gdy zawartość zmieni się w wyniku zmian w drzewach wizualnych skojarzonych z oknem. Innymi słowy, podobnie jak miniatury DWM, mapy bitowe okna DirectComposition są "aktywne".
Kojarzenie zawartości mapy bitowej z wizualizacją
W przypadku wszystkich trzech rodzajów map bitowych aplikacja może skojarzyć tę samą mapę bitową z wieloma wizualizacjami, co oznacza, że pojedyncza alokacja pamięci może służyć do wyświetlania tej samej zawartości kilka razy.
Kanał alfa
Wszystkie mapy bitowe mają format 32 bitów na piksel (BPP), który zawiera osiem bitów przezroczystości na piksel. Jednak aplikacja może określić, w jaki sposób funkcja DirectComposition powinna korzystać z kanału alfa. W szczególności funkcja DirectComposition może uwzględniać kanał alfa lub całkowicie ignorować alfa, w tym przypadku mapa bitowa jest uważana za w pełni nieprzezroczystą.
Dodatkowy tryb alfa ignoruje kanał alfa, ale traktuje czerwone, zielone i niebieskie wartości jako wartości alfa kanału zamiast normalnej interpretacji tych kanałów jako rozszerzaności kolorów. Ten tryb jest przydatny w przypadku renderowania ClearType, który wymaga informacji o pokryciu pod pikselami. Aby użyć trybu alfa dla kanału, aplikacja musi najpierw użyć Direct2D i DirectWrite do zapisywania danych pokrycia pod pikselami na mapie bitowej. Następnie aplikacja musi ustawić prawidłowy tryb alfa i określić kolor tekstu po skojarzeniu mapy bitowej z wizualizacją. Funkcja DirectComposition łączy kolor tekstu z danymi pokrycia, co powoduje, że funkcja ClearType miesza się w tle.
W sytuacjach, gdy algorytm ClearType nie ma zastosowania, na przykład jeśli mapa bitowa nie jest wyrównana do pikseli i wyrównana do osi lub jeśli musi zostać narysowana na powierzchni pośredniej, funkcja DirectComposition może użyć danych pokrycia subpixel w mapie bitowej w celu utworzenia rasteryzacji w skali szarości, automatycznie i bez dodatkowych kosztów.
Aby uzyskać więcej informacji, zobacz opis parametru alphaMode IDCompositionDevice::CreateSurface lub IDCompositionDevice::CreateVirtualSurface.
Tematy pokrewne