Avatar uživatele
run2

Jaký je rozdíl mezi dvojitým a trojitým bufferem u vsyncu a jak je to v jejich porovnání na náročnost grafické karty?

U jedné hry mám na výběr u Vsyncu a to dvojitý a trojitý. Je to proto, že i dvojitý vsync uzavře FPS podle nastavené frekvence LCD a trojitý má nějakou vlastní třeba adaptační hodnotu?

Zajímavá 0 před 2403 dny Sledovat Nahlásit



Nejlepší odpověď
Avatar uživatele
Quimby

Render probíhá tak, že existuje buffer kam se během jednoho frame zapisujou/kreslí data a zároveň se vykresluje na obrazovku, což je problém páč se do něj zapisuje a čte zároveň, takže obraz může problíkávat a trhat se.

Lepší technika je použít dva buffery(to co označuješ jako dvojitý buffer, double buffering) – „přední“ a „zadní“. Do zadního kreslí aplikace a přední se zobrazuje na monitoru. Až aplikace dokreslí, tak se buffery prohodí, což je rychlé páč se změní jen adresy ze/do kterých se čte/zapisuje. Takže na monitoru vždy vidíš korektní obraz.
Ovšem pokud je zaplý Vsync, tak prohození není okamžité, protože se musí počkat až na obnovení monitoru. Mezitím nemá aplikace kam kreslit, proto existuje tripple buffering, který nečekaně používá tři buffery – 2 „zadní, 1 "přední“. Kdy v tu chvíli kdy by aplikace právě neměla kam kreslit, tak začne kreslit do druhého zadního bufferu.

Výkon to nesníží a navíc triple buffer zajistí co největší plynulost, protože aplikace nemusí na nic čekat. Nevýhoda je vyšší paměťová náročnost pro uložení bufferů. Jo a když máš VSync vyplej a FPS vyšší než frekvenci, tak je to jedno, ale VSync a další technologie pomáhají proti trhání obrazu(prohození během obnovování monitoru)

Buffer může být různě velký ale většinou to je 32bit barva, 32bit depth a stencil na pixel. V případě, že aplikace používá deferred rendering to může být klidně 2×-4× víc.
Takže v případě FULL HD má buffer cca 16MB+, což si dnešní grafiky můžou v klidu dovolit.

0 Nominace Nahlásit

Otázka nemá žádné další odpovědi.



Diskuze k otázce

U otázky nebylo diskutováno.

Nový příspěvek