Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka
U aplikací ve Windows 10 doporučujeme místo DirectComposition používat rozhraní API pro Windows.UI.Composition. Další informace najdete v tématu Modernizace desktopové aplikace pomocívrstvy vizuálu .
Microsoft DirectComposition je rastrový kompozitační modul. Umožňuje vývojářům aplikací kombinovat více rastrových obrázků a manipulovat s nimi různými způsoby, jak dosáhnout zajímavých vizuálních efektů a animací v uživatelském rozhraní aplikace. Toto téma popisuje typy rastrového obsahu, který DirectComposition podporuje.
Rastrový obsah
Aplikace poskytují DirectComposition s rastrovým obsahem, který se má vytvořit a animovat vytvořením vizuálních objektů a pak nastavit vlastnost Content těchto objektů. DirectComposition nenabízí žádné služby rasterizace. Aplikace musí použít jinou softwarovou nebo hardwarově akcelerovanou rasterizační knihovnu, jako je Direct2D nebo Direct3D k naplnění rastrových obrázků, které se mají skládat. Po vytvoření předá DirectComposition složený rastrový obsah Desktop Window Manager (DWM) pro vykreslení na obrazovku.
Podporované typy rastrového obsahu Microsoft DirectComposition podporuje následující druhy rastrových obrázků:
Rastrové obrázky paměti videa
Rastrový obrázek paměti videa je rastrován v hardwaru pomocí metod Microsoft DirectX (včetně modelu vzájemné spolupráce DX-to-GDI). Je podporován sdílenými povrchy napříč procesy, které jsou viditelné volající aplikaci a DirectComposition. Bitmapa paměti videa není předmětem roztrhání, protože aplikace může číst pouze z povrchů, ze které DirectComposition textury.
Videoobsávný obsah
Aplikace můžou použít DirectComposition k vytváření snímků videa, které používají prohození bez oken DirectX, které jsou svázané s povrchem DirectComposition. DirectComposition pracuje s obsahem videa jako sekvencí rastrových obrázků. DirectComposition neposkytuje způsob prezentace snímků videa.
DirectComposition podporuje řetězy prohození bez oken DirectX – to znamená prohození řetězů, které nejsou svázané s určitým oknem – a umožňuje dvěma různým aplikacím sdílet řetězy prohození bez oken napříč hranicemi procesu. Sdílení řetězů prohození bez oken umožňuje scénáře videa, ve kterých se řetěz prohození vytvoří v jednom procesu a používá se s DirectComposition v druhém procesu. Řetězce prohození bez oken se vytvářejí pomocí metody IDXGIFactory2::CreateSwapChainForCompositionSurface.
Další informace o prohození řetězců DirectX naleznete v tématu DXGI Přehled.
Stereo obsah
Koncepčně se stereo swapový řetězec skládá z povrchů grafické infrastruktury (DXGI) Microsoft DirectX, které představují levé a pravé kanály pro stereo 3D obsah. Pokud se stereo swapový řetězec použije jako rastrový zdroj pro vizuál, DirectComposition se vytvoří ve stereofonní sestavě. Veškerý ne stereo obsah (mono obsahu) je považován za identický obsah levého a pravého kanálu; to znamená, že stejný rastrový obsah se používá pro oba kanály. DirectComposition kompozuje veškerý levý obsah a veškerý správný obsah samostatně. Pokud zobrazovací zařízení není stereofonní, DirectComposition považuje levý nebo pravý stereo kanál (v závislosti na aplikaci) za mono obsah a kompozice používá pouze tato data pro rastrový prostředek.
DirectComposition nepodporuje vytváření nebo manipulaci s stereo obsahem a nemůže zvýšit úroveň mono swapového řetězce na stereo pár. Před prezentováním stereo obsahu DirectX do DirectComposition musí aplikace tyto úlohy provést. Aplikace musí také poskytnout posuny levého a pravého kanálu pro hloubkové vnímání; DirectComposition nemůže upravit posuny levého a pravého kanálu tak, aby se upravila vnímaná hloubka stereo obsahu DirectX.
Stereofonní obsah DirectX se skládá a zachovává do DWM, pokud je k dispozici stereofonní hardware.
Rastrové obrázky oken
"Rastrový obrázek okna" není skutečný rastrový obrázek, ale je zástupný symbol, který DirectComposition nahrazuje v reálném čase rasterizacemi vrstvených horních nebo podřízených oken. Rastrový obrázek okna se podobá miniaturě DWM, s tím rozdílem, že miniatura může obsahovat příspěvky z mnoha oken, jako jsou vlastněná ne child windows, zatímco rastrový obrázek okna DirectComposition je vždy reprezentací pouze jednoho okna a jeho podřízených oken.
Vzhledem k tomu, že DirectComposition má přístup k plochě přesměrování všech oken a všech vizuálních stromů, může znovu použít obsah z jednoho okna ve více stromech vizuálů. Okno musí být vrstvené, protože nevrstvé okno nemá vyhrazenou plochu přesměrování, a proto není vždy k dispozici pro DirectComposition.
Pokud chcete použít rastrový obrázek okna, aplikace přidruží vizuál k úchytu okna (HWND). DirectComposition poté znovu vytvoří vizuál pokaždé, když se obsah okna změní, včetně toho, kdy se obsah změní v důsledku změn stromy vizuálu přidružené k oknem. Jinými slovy, například miniatury DWM, rastrové obrázky okna DirectComposition jsou "živé".
Přidružení rastrového obsahu k vizuálu
U všech tří druhů rastrových obrázků může aplikace přidružit stejný rastr k více vizuálům, což znamená, že jedno přidělení paměti lze použít k zobrazení stejného obsahu několikrát.
Alfa kanál
Všechny rastrové obrázky mají formát BPP (32 bitů na pixel), který obsahuje osm bitů pro průhlednost pixelů. Aplikace však může určit, jak má DirectComposition využívat alfa kanál. DirectComposition může zejména respektovat alfa kanál, nebo může úplně ignorovat alfa, v takovém případě je rastrový obrázek považován za zcela neprůkazný.
Další alfa režim ignoruje alfa kanál, ale považuje červené, zelené a modré hodnoty za alfa hodnoty podle kanálu namísto normální interpretace těchto kanálů jako intenzity barev. Tento režim je užitečný pro vykreslování ClearType, které vyžaduje informace o pokrytí pod pixely. Pokud chcete použít režim alfa pro jednotlivé kanály, musí aplikace nejprve použít Direct2D a DirectWrite k zápisu dat pokrytí pod pixely do rastrového obrázku. V dalším kroku musí aplikace nastavit správný alfa režim a určit barvu textu, když přidruží rastrový obrázek k vizuálu. DirectComposition prolíná barvu textu s daty pokrytí, která vytváří kombinaci ClearType na pozadí.
V situacích, kdy není algoritmus ClearType použitelný, například pokud rastrový obrázek není zarovnaný a zarovnaný na osu, nebo pokud je třeba ho nakreslit na přechodovou plochu, může DirectComposition použít data pokrytí subpixelu v rastrovém obrázku k vytvoření rastrování ve stupních šedé automaticky a bez dalších nákladů.
Další informace najdete v popisu parametru alphaMode funkce IDCompositionDevice::CreateSurface nebo IDCompositionDevice::CreateVirtualSurface.
Související témata