Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Ez a témakör a Microsoft DirectComposition-effektusok alapjait ismerteti, és ismerteti a DirectComposition által támogatott effektustípusokat.
Ez a témakör a következő szakaszokat tartalmazza:
- Mi az a DirectComposition-effektus?
- Átlátszóság
- térhatású perspektíva-átalakítás hatásai
- Objektumok effektusa
- Kapcsolódó témakörök
Mi az a DirectComposition-effektus?
A DirectComposition effektus egy bitképművelet, amelyet a vizualizáció raszterizálása során alkalmazunk a vizualizáció megjelenésének valamilyen módon történő módosítására.
A DirectComposition egy effektust hoz létre úgy, hogy egy vizualizációs részhalmazt vesz fel, és egyetlen bitképbe rendereli, mielőtt alkalmazná az effektust. Ha például 3D perspektíva-átalakító effektust szeretne létrehozni, a DirectComposition létrehoz egy vizualizációs alfáról készült képet, majd a képet egy 3D síkra állítja át, amely a 3D átalakítási effektus eredményül kapott mátrixa szerint lesz átalakítva.
A DirectComposition az alábbi effektustípusokat támogatja.
| Effektus típusa | Leírás |
|---|---|
| Átlátszóság | Egy teljes vizualizáció átlátszatlanságát állítja be. |
| térhatású perspektíva átalakítása | Háromdimenziós (3D) perspektíva-átalakító effektust alkalmaz egy vizualizációra. |
Jegyzet
A DirectComposition nem végez különleges feldolgozást, amikor effektusokat alkalmaz a térhatású sztereó tartalmakra. Ez azt jelenti, hogy a 3D tartalom torzítva jelenhet meg, amikor effektust alkalmaz rá.
Átlátszatlanság
Az átlátszatlansági effektussal beállíthatja a teljes vizualizációra alkalmazott átlátszatlansági tényezőt a vizualizáció megjelenítésekor. Abban különbözik az alfamaszktól, hogy ugyanazt az átlátszatlansági tényezőt alkalmazza a vizualizáció összes képpontja. Az átlátszatlanság értéke 0 (teljesen átlátszó) és 1 (teljesen átlátszatlan) között van megadva.
Az átlátszatlansági tényezőt a szülőtől a gyermekvizualizációkig alkalmazza a rendszer, de a beágyazott átlátszatlansági beállítások látható hatásai nem jelennek meg az egyes gyermekvizualizációk tulajdonságértékében. Ha például egy gyökérvizualizáció 50% (0,5) átlátszatlansággal rendelkezik, és az egyik gyermekének 20% (0,2) opacitása van, a gyermek nettó átlátszatlansága 10% (0,1) lesz, de a gyermek opacitás tulajdonságának értéke továbbra is 0,2 lesz.
Térhatású perspektíva-átalakítás hatásai
Ez a szakasz a DirectComposition által a térhatású perspektíva-átalakítási effektusok végrehajtásához használt koordinátaterületet ismerteti. Emellett ismerteti a DirectComposition által támogatott térhatású perspektíva-átalakítási effektusok típusait is.
- DirectComposition 3D koordináta-tér
- 3D rotációs átalakítási effektus
- 3D skálázási átalakítási effektus
- 3D fordításátalakítási effektus
- térhatású mátrixátalakítási effektus
- 3D átalakítási effektuscsoport
Jegyzet
A DirectComposition-ban a 3D-effektusok alkalmazása a vizualizációfa több szintjére nem ugyanúgy működik, mint a teljes 3D motorral, például a Microsoft Direct3D-vel. Vegyük például azt a szülővizualizációt, amely egyetlen gyermekvizualizációval rendelkezik. Ha a gyermekvizualizáció 90 fokkal előre van forgva a z irányban (az y tengely körül), a gyermekvizualizáció széle szembe fog nézni a megtekintővel, ezért elvárjuk, hogy a vizualizáció ne legyen látható (mivel a bitképnek nincs valós mélysége). Ha a szülővizualizáció ezután 90 fokkal visszafelé fordul a negatív z irányban (az y tengely körül), akkor várható, hogy a gyermekvizualizáció teljesen láthatóvá válik (mivel az átalakítások eltitkolja egymást). A DirectComposition esetében azonban ez nem így van. A gyermekvizualizáció nem lesz látható, mert a szülőbitképbe "belesimult".
A DirectComposition 3D koordináta-tér
A 3D átalakítási effektusok DirectComposition koordináta-területe a bitképfelület bal felső sarkában található forrást (0,0,0) találja meg, a pozitív x tengely értékei jobbra haladnak, a pozitív y tengely értékei lefelé haladnak, a pozitív z tengely értékei pedig kifelé haladnak a forrástól a megtekintő felé. Ez az ábra a DirectComposition 3D koordináta-területet mutatja.
Térhatású rotációs átalakítási effektus
A térhatású elforgatási transzformációs effektus három dimenzióban forgatja el a vizualizációt a megadott szögben a megadott középponton (x,y,z) található forgatási tengelyvektor [x,y,z] körül. A szög fokban van megadva. Az alapértelmezett elforgatási tengely vektora [0,0,-1], az alapértelmezett középpont pedig (0,0,0).
A IDCompositionDevice::CreateRotateTransform3D metódussal hozzon létre 3D rotációs átalakító objektumot. A metódus egy IDCompositionRotateTransform3D felületet kér le, amellyel beállíthatja az objektum tulajdonságait.
Térhatású skálázási átalakítási effektus
A térhatású skálázási átalakítási effektusok nagyobbá vagy kisebbé teszik a vizualizációt. A vizualizációt [x,y,z] irányban skálázza a középpont (x,y,z) felé. Az alapértelmezett középpont (0,0,0).
Használja az IDCompositionDevice::CreateScaleTransform3D metódust 3D méretezési átalakító objektum létrehozásához. A metódus egy IDCompositionScaleTransform3D felületet kér le, amellyel beállíthatja az objektum tulajdonságait.
Térhatású fordítási átalakítási effektus
A térhatású fordítási átalakítási effektus megváltoztatja a vizualizáció helyét [x,y,z] irányban.
A IDCompositionDevice::CreateTranslateTransform3D metódussal hozzon létre 3D fordításátalakítási objektumot. A metódus egy IDCompositionTranslateTransform3D felületet kér le, amellyel beállíthatja az objektum tulajdonságait.
3D mátrix átalakító effektus
Az IDCompositionMatrixTransform3D interfész lehetővé teszi saját 4-4 átalakítási mátrix definiálásához és vizualizációkhoz való alkalmazásához. Ez a felület akkor hasznos, ha olyan 3D perspektíva-átalakítási effektust kell alkalmaznia, amely nem érhető el a Többi DirectComposition 3D átalakítási effektus interfészen keresztül. A mátrixot egy D3DMATRIX szerkezet kitöltésével és a IDCompositionMatrixTransform3D::SetMatrix metódusnak való átadásával határozhatja meg. Másik lehetőségként beállíthatja a mátrix egyes elemeit az IDCompositionMatrixTransform3D::SetMatrixElement metódussal.
3D átalakítási effektusok csoportja
Az IDCompositionDevice::CreateTransform3DGroup létrehoz egy 3D átalakítási effektusokat tartalmazó gyűjteményt, amelyet csoportként alkalmazhat egy vizualizációra. A tömb tetszőleges számú átalakítási objektumot tartalmazhat, valamint mátrixokat, elforgatásokat, méretezést és fordítást is tartalmazhat. A 3D átalakító objektumok gyűjteménye olyan átalakítást eredményez, amelynek értéke a gyűjteményben lévő egyes transzformációs mátrixok mátrix-szorzása.
Fontos az egyes átalakítások sorrendje a csoportban. Ha például először elforgatja, majd skálázza, majd lefordítja, más eredményt kap, mint ha először fordítja, majd elforgatja, majd skálázza. A DirectComposition ugyanúgy tartja tiszteletben a 3D-átalakítások 3D-s csoporton belüli megadásának sorrendjét, mint a 2D-átalakítások esetében. Emellett a térhatású perspektíva-átalakítások a vizualizációfa összesimítását eredményezik, miután az aktuális vizualizáció összes 3D-átalakítását alkalmazták. Ezzel biztosítható, hogy a jelenet a lehető legközelebb nézzen ki a 3D-hez.
Objektumok effektusa
Ha effektust szeretne alkalmazni egy vizualizációra, először létre kell hoznia és be kell állítania egy olyan effektusobjektum tulajdonságait, amely a vizualizáción létrehozni kívánt effektus típusát jelöli. Ezután alkalmaznia kell az effektusobjektumot a vizualizáció Effektus tulajdonságára.
Effektusobjektum létrehozásához az alábbi IDCompositionDevice felületi metódusok egyikével hozzon létre egy effektusobjektumot a kívánt effektustípushoz. Az alábbi metódusok effektusobjektumokat hoznak létre:
Az előző metódusok mindegyike lekéri az újonnan létrehozott effektusobjektum tulajdonságainak beállításához használható felületet. A felületi metódusok használatával szükség szerint beállíthatja a kívánt vizualizációeffektus létrehozásához szükséges tulajdonságokat.
Az effektusobjektumok legtöbb tulajdonsága animálható. Egy adott tulajdonság animálásához hozzon létre egy animációs objektumot, és alkalmazza az animálni kívánt tulajdonságra; ellenkező esetben állítsa a tulajdonságot egy statikus értékre, amely létrehozza a kívánt hatást. További információ a tulajdonságok animálásáról: Animációs.
Ha effektusobjektumot szeretne alkalmazni a vizualizációra, hívja meg az IDCompositionVisual::SetEffect metódust. Ha effektust alkalmaz egy vizualizációra, az effektus az adott vizualizációban gyökerező teljes vizualizáció-részhalmazra lesz alkalmazva. Így például ha egy vizualizáció átlátszatlanságát 50 százalékra állítja, a vizualizáció alterületében lévő összes gyermekvizualizáció opacitása 50 százalékkal csökken. Ugyanazt az effektusobjektumot egy vagy több vizualizációra is alkalmazhatja. Ha egy effektusobjektum tulajdonságait a vizualizációkra való alkalmazás után módosítja, a rendszer az összes vizualizációt újra összeállja, hogy tükrözze a változást.
Egy effektuscsoport-objektum használatával egyszerre több effektust is alkalmazhat egy vizualizációra. Először hívja meg IDCompositionDevice::CreateEffectGroup az effektuscsoport-objektum létrehozásához, majd az objektum IDCompositionEffectGroup felületének használatával adjon hozzá effektusokat a csoporthoz.
Kapcsolódó témakörök