Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=951&lang=405, vytištěno: 30.04.2025 11:06:18
Hlavní stránka▹Produkty▹Programový systém Control Web▹Články | 16.9.2020 |
---|
Vykreslovače grafiky nám vymožňují vybrat si, jaké grafické programové rozhraní operačního systému bude použito pro zobrazování virtuálních přístrojů. |
Je nutno uznat, že kdo nechce, nemusí se touto problematikou příliš zabývat. Pouze si poskládá vybrané komponenty do podoby své aplikace a má práci hotovou. Se znalostí věci ale můžeme dokázat vice. V ideálním světě bychom se o metody vykreslování grafiky nemuseli vůbec zajímat. Počítač a operační systém by poskytovaly rychlou 2D i 3D grafiku, k tomu i kvalitní a vždy ostrá písma a vše by samozřejmě bylo možno plynule zvětšovat a zmenšovat. Kvalita, hladkost a současně ostrost by byly vždy maximální bez ohledu na fyzické rozlišení obrazovky. A že by se vše vždy bleskurychle překreslovalo bez jakéhokoliv mihotání, blikání a jiných rušivých efetků se rozumí samo sebou. V prostředí systému Control Web se nám podařilo tohoto ideálu dosáhnout, nebo alespoň jsme se k němu velice přiblížili. Nejdříve si ale odpovězme na několik otázek. Co jsou to vykreslovače grafiky? Jaký mám zvolit vykreslovač v panelu své aplikace? Jak bude vykreslování grafiky rychlé a jaký na to budu potřebovat počítač?Vykreslovače grafiky jsou programové komponenty, které pro aplikace zajištují veškeré služby spojené s vykreslováním grafiky. Virtuální přístroje v aplikaci pak tyto služby používají zcela nezávisle na konkrétním typu vykreslovače. Lze volit mezi několika grafickými vykreslovači. Již samotná tato možnost volby může být pro někoho mírně matoucí a vede k několika dalším otázkám. Správný výběr vykreslovače podstatně ovlivňuje vlastnosti vyvíjené aplikace. Pokusme se proto problematiku vykreslování grafiky blíže popsat. Obr. 1: Volba typu vykreslovače v inspektoru virtuálního přístroje Pro virtuální přístroje v aplikacich systému Control Web můžeme pro parametr graphics_mode zvolit jednu z následujících možností:
Proč je správná volba jedné z této možností pro kvalitu aplikace důležitá?Operační systém Windows si s sebou nese docela velkou historickou zátěž. Tato zátěž se pak samozřejmě týká i většiny programového vybavení, které je v tomto operačním systému instalováno. My se nyní z celého rozsáhlého aplikační programové rozhraní Windows budeme zabývat jen podporou vykreslování grafiky. Od počátků existence Windows je jednou z jeho hlavních součástí rozhraní GDI. Byť jsou možnosti GDI v mnoha směrech na dnešní dobu velmi omezené, pro použití při vykreslování např. textů a tabulek nebo klasických dialogových oken je stále velmi dobrým řešením. Výkon je limitovám prakticky nulovým využíváním grafických procesorů ale největším problémem je pro nás omezení na celočíselné souřadnice. Obecné křivky jsou kostrbaté bez možnosti vyhlazování antialiasingem. Omezenost na celá čísla také znemožňuje plynulé zvětšování a zmenšování grafiky. Vzhledem k tomu, že při DGI vykreslování se každý virtuální přístroj překresluje nezávisle na ostatních virtuálních přístrojích ležících vedle něj i pod ním, může u transparentních přístrojů, které nepřekreslují celou svou plochu, docházet k blikání, neboť je nutno překreslovat vše odspodu nahoru. Blikání lze eliminovat volbou gdi_off_screen, kdy se vše pomocí GDI překreslí v paměti počítače a teprve poté se hotový obrázek přenese na obrazovku. GDI vykreslovač je výbornou volbou pro grafiku, která obsahuje např. hodně textu a tabulek. Naopak kvalita vektorových kreseb je velmi problematická. Také je tento grafický systém nutností v panelech, které obsahují např. ActiveX komponenty nebo také OpenGL vykreslovací kontexty kamer využívajících masivně paralelního výkonu grafických procesorů. Prostřednictvím GDI není možno dostatečně kvalitně vykreslovat obecnou vektorovou grafiku, o 3D grafice nemluvě, proto bylo do Windows doplněno grafické rozhraní GDI+. Toto rozhraní, které je mimochodem tvořeno přímo C++ třídami, přináší do 2D grafiky souřadnice v plovoucí řádové čárce, antialiasing, alpha blending, gradientní výplně a maticové transformační operátory. Obdobně jako GDI, ani GDI+ grafika není nijak hardwarově akcelerována. Vektorová grafika je vykreslována kvalitně, ale výkon může být často nedostatečný. Větší využití hardwarové akcelerace ve Windows poskytuje aplikační knihovna Direct2D, která využívá grafického systému Direct3D. Klíčovou komponentou systému Direct2D je ale softwarový rasterizer, který využívá pouze CPU počítače. Není tedy zcela zdokumentováno ani není zřejmé, co vše je při používání tohoto rozhraní hardwarově akcelerováno. Vykreslovací výkon je však znatelně vyšší než u GDI+ při srovnatelné kvalitě vykreslené grafiky. Vykreslovače DGI+ a Direct2D umožňují plynulé zvětšování a zmenšování grafické podoby aplikací. Největší míru hardwarové akcelerace poskytuje grafické rozhraní OpenGL. Tento vykreslovač nejenže poskytuje vysoký výkon, plynulé zvětšování a zmenšování grafiky aplikací, ale jako jediný umožňuje také neomezené současné používání 2D i 3D virtuálních přístrojů ve společném panelu. To zní jako onen ideál, zmíněný v úvodu tohoto článku. Největším problémem OpenGL grafiky je asi to, že toto grafické rozhraní nemá firma Microsoft příliš ráda. Nejviditelnějším projevem toho vztahu je fakt, že operační systém Windows neposkytuje pro OpenGL prakticky žádnou podporu rasterizace a vykreslování fontů, která je samozřejmá, a mimochodem velmi kvalitní, pro všechna ostatní grafická API z dílny Microsoftu. Proto byl v systému Control Web 7 pro vysoce kvalitní rasterizaci fontů v OpenGL vykreslovači použit rasterizer FreeType, jaký je využíván např. v operačních systémech Linux, Android, iOS, macOS, PlayStation a v prostředí Java atd. Fonty jsou při zvětšování a zmenšování obrazu vždy rasterizovány s maximální ostrostí ve všech velikostech a ve všech poměrech šířky k výšce. Rozsah znaků byl ale stále omezen na aktuální kódovu stránku. Až Control Web 8 byl vybaven správou fontů v plném rozsahu UNICODE kódování. Problém byl tedy odstraněn. Předností je hodně, k těm důležitým snad patří, že:
Musíme se při tvorbě aplikace tímto vším zabývat?Nemusíme, ale pro tvorbu vizuálně působivých aplikací je výhodou znát přednosti i nedostatky jednotlivých grafických vykreslovačů. Náš aplikační program pak může být nejen hezčí, ale také současně i rychlejší a plynuleji běžící. Snad se nedopustíme přílišného zjednodušení, když uvedeme:
Obr. 9: Editaci přístrojů v prostoru scény usnadňují mechanismy lepení a spojování přístrojů i hromadná manipulace s přístroji Univerzální systém pro moderní grafiku.Architektura komponent grafických vykreslovačů přináší virtuálním přístrojům možnost používat grafiku na abstraktní úrovni zcela nezávisle od jednotlivých implementací grafických funkcí. To nám otevírá přístup k moderním a výkonným technologiím počítačové grafiky a současně dlouhodobě zachová zpětnou kompatibilitu a umožňuje provoz prostředí Control Web na široké škále počítačů.
Roman Cagaš |