Sdílet prostřednictvím


Co je swap chain? (Direct3D 9)

Swap chain je kolekce vyrovnávacích pamětí, které se používají k zobrazení snímků pro uživatele. Pokaždé, když aplikace uvede nový snímek k zobrazení, první vyrovnávací paměť v rámci výměnného řetězce nahradí tu, která je právě zobrazena. Tento proces se nazývá výměna nebo otočení.

Grafický adaptér obsahuje ukazatel na povrch, který představuje obrázek zobrazený na monitoru, neboli přední buffer. Při aktualizaci monitoru odešle grafická karta obsah přední vyrovnávací paměti do monitoru k zobrazení. To ale vede k problému při vykreslování grafiky v reálném čase. Jádrem problému je, že obnovovací frekvence monitorů jsou ve srovnání se zbytkem počítače velmi pomalé. Běžné obnovovací frekvence jsou od 60 Hz (60krát za sekundu) do 100 Hz. Pokud vaše aplikace aktualizuje front buffer v době, kdy je monitor uprostřed obnovy, obraz, který se zobrazí, bude rozdělen na poloviny, přičemž horní polovina displeje bude obsahovat starý obraz a dolní polovina nový obraz. Tento problém se označuje jako trhání.

Direct3D implementuje dvě možnosti, jak se vyhnout slzám:

  • Možnost povolit pouze aktualizace monitoru v operaci vertikální retrace (nebo vertikální synchronizace). Monitor obvykle aktualizuje svůj obrázek tak, že vodorovně přesune světlý špendlík, který se roztáčí z levého horního rohu monitoru a končí vpravo dole. Když světelný bod dosáhne dolní části, monitor jej kalibruje přesunutím zpět do levého horního rohu, aby proces mohl znovu začít. Tato rekalibrace se nazývá vertikální synchronizace. Během vertikální synchronizace monitor nic nekreslí, takže žádná aktualizace přední vyrovnávací paměti se nezobrazí, dokud monitor nezačne znovu kreslit. Vertikální synchronizace je poměrně pomalá; ale není dostatečně pomalé, aby se při čekání vykreslila složitá scéna. Co je potřeba k tomu, aby se zabránilo trhání a bylo možné vykreslovat složité scény, je proces označovaný jako zadní vyrovnávací paměť.
  • Možnost použití techniky nazývané zádní vyrovnávací paměť. Zpětné ukládání do vyrovnávací paměti je proces kreslení scény na plochu mimo obrazovku, označovaný jako zadní vyrovnávací paměť. Všimněte si, že jakákoli jiná plocha než přední buffer se nazývá povrch mimo obrazovku, protože ho monitor nikdy přímo nezobrazuje. Při použití zpětné vyrovnávací paměti má aplikace možnost vykreslit scénu vždy, když je systém nečinný (to znamená, že žádné zprávy Windows nečekají), aniž by musela brát v úvahu obnovovací frekvenci monitoru. Zadní buffer přináší další komplikaci v tom, jak a kdy přesunout zadní buffer do předního bufferu.

Proces přesunutí zadní vyrovnávací paměti do přední vyrovnávací paměti se nazývá překlopení povrchu. Vzhledem k tomu, že grafická karta jednoduše používá ukazatel na plochu, která představuje přední vyrovnávací paměť, je jednoduchá změna ukazatele všechna potřebná k nastavení vyrovnávací paměti zpět na přední vyrovnávací paměť. Když aplikace požádá Direct3D, aby zobrazila zadní buffer na přední buffer, Direct3D jednoduše "překlopí" dva ukazatele povrchu. Výsledkem je, že zadní vyrovnávací paměť je nyní novou frontovou vyrovnávací pamětí a stará frontová vyrovnávací paměť je nová zpětná vyrovnávací paměť. Překlopení povrchu se vyvolá pokaždé, když aplikace požádá zařízení Direct3D, aby představilo zadní vyrovnávací paměť; Direct3D však lze nastavit tak, aby zařadil požadavky do fronty, dokud nedojde ke vertikální synchronizaci. Tato možnost se označuje jako prezentační interval zařízení Direct3D. Mějte na paměti, že data v nové zadní vyrovnávací paměti nemusí být opakovaně použitelná v závislosti na tom, jak aplikace určuje, jak má Direct3D zpracovávat překlopení povrchu. Překlopení zařízení Surface je klíčem k multimediálnímu, animačnímu a hernímu softwaru; je ekvivalentní způsobu, jakým můžete provádět animaci s podložkou papíru. Na každé stránce se obrázek mírně změní, takže při rychlém překlopení mezi listy se kresba zobrazí animované.

povrchů Direct3D

Přepínání povrchů (Direct3D 9)