Bitképobjektumok

Jegyzet

Windows 10-es alkalmazások esetén a DirectComposition helyett a Windows.UI.Composition API-kat javasoljuk. További információ: Asztali alkalmazás modernizálása a Visual layerhasználatával.

A Microsoft DirectComposition egy bitkép-összeállítási motor. Lehetővé teszi, hogy az alkalmazásfejlesztők több bitképet kombináljanak, és különböző módokon manipulálják őket, hogy érdekes vizuális effektusokat és animációkat érjenek el az alkalmazás felhasználói felületén. Ez a témakör a DirectComposition által támogatott bitképtartalmak típusait ismerteti.

Bitkép tartalma

Az alkalmazások a DirectComposition-t a bitkép-tartalommal együtt adhatja meg vizuális objektumok létrehozásával, majd az objektumok Tartalom tulajdonságának beállításával. A DirectComposition nem kínál raszterizálási szolgáltatásokat. Az alkalmazásoknak más szoftveralapú vagy hardveresen gyorsított raszterizálási kódtárat kell használniuk, például Direct2D vagy Direct3D a összeállítandó bitképek feltöltéséhez. Az írás után a DirectComposition átadja a komponált bitképtartalmat Asztali ablakkezelő (DWM) a képernyőre való megjelenítéshez.

támogatott bitkép-tartalomtípusok A Microsoft DirectComposition a következő bitképtípusokat támogatja:

Videomemória bitképei

A videomemória bitképe a Microsoft DirectX-módszerekkel (beleértve a DX-to-GDI interop modellt is) hardverben van raszterizálva. Ezt a hívó alkalmazás és a DirectComposition számára látható, többfolyamatos megosztott felületek is alátámasztják. A videomemória bitképének nem kell szakadnia, mert az alkalmazás csak azokból a felületekről tud olvasni, amelyekből a DirectComposition textúrái származnak.

Videótartalom

Az alkalmazások a DirectComposition használatával olyan videokereteket írhatnak, amelyek DirectX ablak nélküli felcserélési láncokat használnak, amelyek egy DirectComposition-felülethez vannak kötve. A DirectComposition elméletileg bitképek sorozataként kezeli a videótartalmakat. A DirectComposition nem biztosít módot a videoképek bemutatására.

A DirectComposition támogatja a DirectX ablak nélküli felcserélési láncokat , vagyis azokat a swapláncokat, amelyek nem kötődnek egy adott ablakhoz, és lehetővé teszi, hogy két különböző alkalmazás megossza az ablak nélküli swapláncokat a folyamathatárokon. Az ablak nélküli felcserélési láncok megosztása olyan videoforgatókönyveket tesz lehetővé, amelyekben a felcserélési lánc egy folyamat során jön létre, és a DirectComposition-ban egy második folyamat során használatos. Az ablak nélküli felcserélési láncok az IDXGIFactory2::CreateSwapChainForCompositionSurface metódussal jönnek létre.

További információ a DirectX-swapláncokról: DXGI áttekintése.

Sztereó tartalom

A sztereó felcserélési lánc elméletileg a Microsoft DirectX Graphics Infrastructure (DXGI) felületéből áll, amelyek a sztereó 3D-tartalmak bal és jobb csatornáit jelölik. Ha egy vizualizáció bitkép-erőforrásaként sztereó felcserélési láncot használ, a DirectComposition sztereóban alkot. Minden nem sztereó tartalom (mono tartalom) azonos bal és jobb csatornás tartalomnak minősül; vagyis ugyanazt a bitképtartalmat használja mindkét csatornához. A DirectComposition az összes bal és minden jobb tartalmat külön-külön alkotja meg. Ha a megjelenítő eszköz nem sztereó képes, a DirectComposition a bal vagy a jobb sztereó csatornát (az alkalmazástól függően) monotartalomként kezeli, és csak azokat az adatokat használja a bitkép-erőforráshoz.

A DirectComposition nem támogatja a sztereó tartalmak létrehozását vagy manipulálását, és nem tudja előléptetni a mono swap láncot egy sztereó párra. Az alkalmazásoknak el kell végezniük ezeket a feladatokat, mielőtt DirectX sztereó tartalmat mutatnak be a DirectComposition-nak. Emellett az alkalmazásnak biztosítania kell a bal és a jobb csatorna eltolását a mélységi észleléshez; A DirectComposition nem tudja módosítani a bal és a jobb csatorna eltolását a DirectX sztereó tartalom érzékelt mélységének módosításához.

A DirectX sztereó tartalma akkor áll össze és marad meg a DWM-ben, ha rendelkezésre áll a sztereó hardver.

Ablakbitképek

Az "ablakbitkép" nem valódi bitkép, hanem olyan helyőrző, amelyet a DirectComposition valós időben helyettesít a rétegzett felső vagy gyermekablakok raszterizálásával. Az ablak bitképe hasonló a DWM miniatűrhöz, azzal a kivételrel, hogy a miniatűrök számos ablakból származó hozzájárulásokat tartalmazhatnak, például a nem gyermekablakok, míg a DirectComposition ablak bitképe mindig csak egy ablak és annak gyermekeinek ábrázolása.

Mivel a DirectComposition hozzáféréssel rendelkezik az összes ablak és az összes vizualizációs fa átirányítási felületéhez, több vizualizációfán lévő ablak tartalmát újra felhasználhatja. Az ablakot rétegzettnek kell lennie, mert egy nem rétegzett ablak nem rendelkezik dedikált átirányítási felülettel, ezért a raszterizálása nem mindig érhető el a DirectComposition számára.

Ablakbitkép használatához az alkalmazás egy vizualizációt egy ablakfogóponthoz (HWND) társít. Ezt követően a DirectComposition újra összeállítja a vizualizációt, amikor az ablak tartalma megváltozik, beleértve azt is, hogy a tartalom mikor változik az ablakhoz társított vizualizációs fák változása miatt. Más szóval, mint a DWM miniatűrök, a DirectComposition ablak bitképek "élő".

Bitképtartalom társítása vizualizációval

Mindhárom bitképtípus esetében az alkalmazás ugyanazt a bitképet több vizualizációhoz is társíthatja, ami azt jelenti, hogy egyetlen memóriafoglalással többször is megjelenítheti ugyanazt a tartalmat.

Alfa csatorna

Minden bitkép 32 bit/képpont (BPP) formátummal rendelkezik, amely képpontonként nyolc bitet tartalmaz a képpontonkénti átlátszóság érdekében. Az alkalmazások azonban meg tudják adni, hogy a DirectComposition hogyan használja fel az alfa csatornát. A DirectComposition különösen tiszteletben tartja az alfa csatornát, vagy teljesen figyelmen kívül hagyhatja az alfa-csatornát, ebben az esetben a bitkép teljesen átlátszatlannak tekinthető.

Egy további alfa mód figyelmen kívül hagyja az alfa csatornát, de a piros, a zöld és a kék értékeket csatornánkénti alfaértékként kezeli a csatornák normál értelmezése helyett színintenzitásként. Ez a mód a ClearType-rendereléshez hasznos, amelyhez képpont alatti lefedettségi adatokra van szükség. A csatornánkénti alfa mód használatához az alkalmazásnak először Direct2D és DirectWrite kell használnia a képpontos lefedettségi adatok bitképbe írásához. Ezután az alkalmazásnak meg kell adnia a megfelelő alfa módot, és meg kell adnia egy szövegszínt, amikor a bitképet egy vizualizációhoz társítja. A DirectComposition egyesíti a szöveg színét a lefedettségi adatokkal, így ClearType-keverést hoz létre a háttérben.

Olyan helyzetekben, amikor a ClearType algoritmus nem alkalmazható, például ha a bitkép nincs képponthoz igazítva és tengelyre igazítva, vagy ha köztes felületre kell rajzolni, a DirectComposition a bitképben lévő alpixeles lefedettségi adatokat használhatja szürkeárnyalatos raszterizálás létrehozásához, automatikusan és további költségek nélkül.

További információt az IDCompositionDevice::CreateSurface vagy IDCompositionDevice::CreateVirtualSurface függvény alphaMode paraméterének leírásában talál.

DirectComposition-fogalmak