Aby mohl 3D virtuální přistroj existovat v GDI panelu nebo přímo na
pozadí Windows, musí si pro sebe vytvořit tzv. vykreslovací kontext.
Tento kontext je svou spotřebou systémových zdrojů prakticky
ekvivalentní kontextu 3D scény nebo panelu s OpenGL vykreslovačem. V
rámci každého vytvořeného kontextu musí v grafické paměti vzniknout
minimálně přední a zadní fragmentový buffer (je používán
doublebuffering), hloubkový buffer a stencil buffer. Vždy se také musí
přeložit a slinkovat několik základních shaderů v jazyce GLSL. Další
objekty pak vznikají podle potřeb vznikajících při vykreslovaní. Také
v paměti CPU musí být vytvořena řada objektů, které se starají např. o
kameru, osvětlení, barvy a materiály atd. Pro dnes běžné velikosti
grafické i operační paměti počítačů to příliš velkou zátěž
nepředstavuje. Systém celkem bez potíží snese i mnoho set takovýchto
kontextů.

Standardní 2D panely s vloženými 3D virtuálními přístroji,
vlevo s OpenGL vykreslovačem, vpravo s vykreslovačem GDI
Tisíce kontextů ale již představují hodně vysoké nároky na
grafickou paměť, na vytváření instanci shaderů při startu aplikace a
také na správu požadavků na vykreslování a synchronizaci programových
vláken v architektuře klient-server. Každý kontext má totiž vlastní
frontu požadavků. Maličkou změnou můžeme dosáhnout významné úspory
systémových zdrojů a efektivnějšího běhu aplikačního programu. Stačí
panelu, ve kterém jsou 3D virtuální přístroje vloženy, nastavit
používání OpenGL vykreslovače.

Volba typu vykreslovače panelu
Toto nastavení má pro aplikaci několik přínosů:
Vznikne jediný vykreslovací kontext přes celou plochu
panelu.
Mnohé objekty v operační i grafické paměti existují pouze v
jedné instanci a jsou uvnitř kontextu sdíleny.
Virtuální přístroje nemusí vykreslovat své pozadí, mohou být
průhledné a mohou se libovolně překrývat.
Také při vykreslování konvenčních 2D virtuálních přístrojů se
v maximální míře používána akcelerace pomocí GPU. Vykreslování je
rychlé a efektivní.
Pro kvalitu kresby mají velký význam shadery pro barevné
přechody, antialiasing, rasterizace fontů atd.
Celý panel lze jednoduše zoomovat při zachování nejvyšší
kvality grafiky včetně ostrosti fontů.
Zobrazení 3D virtuálních přístrojů se v panelu s jedním společným
vykreslovacím kontextem může mírně lišit. Je to dáno tím, že všechny
objekty jsou osvětleny jedním společným zdrojem světla, který je
obvykle někde vpředu vlevo nahoře. I 3D přístroj v GDI panelu vypadá
docela dobře, do svého pozadí automaticky přebírá barvu pozadí panelu,
jen se nedokáže vykreslovat s průhledným pozadím.
RC
|