Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

GLUT (2): výhody a nevýhody

V předchozím dílu jsme si popsali základní charakteristiku knihovny GLUT a důvody jejího vytvoření a používání. V dnešním dílu si stručně popíšeme výhody a nevýhody použití této knihovny v aplikacích, které mají být přenositelné na různé platformy a pro grafický výstup používají knihovnu OpenGL.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Výhody a nevýhody použití knihovny GLUT

Výhody

První velkou výhodou použití knihovny GLUT je možnost vytvoření platformově nezávislých aplikací na úrovni zdrojového kódu; překlad se samozřejmě musí při přechodu na jinou platformu provést. Tyto aplikace mohou pro svůj grafický výstup používat knihovnu OpenGL a základní prvky GUI. U aplikací ovládaných z příkazové řádky (command line) lze dosáhnout přenositelnosti poměrně jednoduše, protože lze využívat například funkce z knihoven odpovídajících normě POSIX. Tyto knihovny, spolu s dalšími utilitami (automake apod.) mohou zajistit systémovou nezávislost a přenositelnost zdrojových kódů aplikace.

U grafických aplikací možnost jednoduché tvorby přenositelných aplikací dlouhou dobu neexistovala. V podstatě na každou významnější platformu byla vyvinuta jedna nebo i více knihoven pro programování počítačové grafiky a tvorbu grafického uživatelského rozhraní. Zakládání oken a tvorba grafického uživatelského rozhraní (GUI) je v současné době buď programována přes aplikační rozhraní (API) daného operačního systému, nebo se používají více či méně multiplatformní knihovny, z nichž nejznámnější jsou například GTK, Qt, wxWindows, Motif, aux či tk [1] [2] [3] [4] [5].

Použitím těchto knihoven lze vytvořit přenositelnou aplikaci s vlastním GUI, ale většinou nelze uspokojivě vyřešit práci s OpenGL. Jednou z výjimek je knihovna Qt, ta však má na druhou stranu nemalé problémy s licencí (pro některé platformy je nutná registrace spojená s poplatky, také podpora OpenGL existuje na některých platformách pouze pro předplacenou verzi). Určitá podpora pro OpenGL existuje i v knihovně wxWindows, je však omezena pouze na objektově orientované jazyky (i když sama dobře objektově navržená není), což je pro některé projekty nevýhodné – například ještě dnes jsou některé matematické modely řešeny ve Fortranu. Pro objektové programování v jazyce C++ existuje rozšíření knihovny GLUT z C do C++, které se jmenuje GlutMaster. Bližší informace o tomto rozšíření najdete na [10].

Druhou výhodou knihovny GLUT je jednoduchost rozhraní (funkčních volání), kterou knihovna GLUT představuje [6] [7] [8]. Jak si ukážeme v dalších dílech, lze i poměrně složitý program napsat s pomocí knihovny GLUT velmi jednoduše. Většinu operací není v některých případech potřeba vůbec provádět, protože knihovna GLUT má implicitně nastavené rozumné (předpokládané) hodnoty, například počáteční velikost okna, nastavení framebufferu apod.

Třetí výhodou je podpora systémově nezávislého vykreslování bitmapových a vektorových znaků z několika znakových sad (i když s omezeními na znakovou sadu ASCII a ISO-8859–1) a možnost tvorby základních trojrozměrných těles, což se hodí hlavně při počátečním nastavování kamery, materiálů a osvětlení.

Nevýhody

Mezi nevýhody použití GLUTu patří už samotná nutnost vytvoření a používání nové vrstvy funkcí, která je vložena mezi aplikaci a platformově závislé knihovny či API. To s sebou přináší poněkud vyšší paměťové nároky. Volání funkcí operačního systému a grafického prostředí přes další funkční mezivrstvu se může projevit i na celkové rychlosti aplikace nebo době odezvy. Knihovna GLUT je však poměrně malá (řádově stovky kB, srovnejme s některými dalšími toolkity, jejichž velikost dosahuje až několika megabytů) a funkce poměrně jednoduché, takže tyto nevýhody nejsou pro většinu aplikací kritické.

Další, poněkud závažnější nevýhodou je to, že s použitím GLUTu ztrácí programátor možnost řízení celé aplikace na úrovni operačního systému. To znamená, že například smyčka zpráv použitá ve většině správců oken (Window managers) není pro programátora viditelná a nemá možnost ji nijak přímo ovlivnit, což se může projevit například v horším ovládání aplikace. Jedním z důsledků tohoto „zapouzdření“ je, že nelze jednoduše vytvořit modální dialogová okna nebo získávat zprávy od okolních aplikací.

Třetí nevýhodou je zatím malá podpora novějších periferních zařízení. Problematická je například podpora kolečka na myši, které se dnes stává již standardem a pro aplikace pracující s trojrozměrnou scénou je často s výhodou používáno. GLUT naopak podporuje taková vstupní zařízení, která se na dnešních typických počítačích téměř nepoužívají, například takzvaný spaceball nebo dial and button box. Existuje i rozšíření knihovny GLUT nazvané GameGLUT, ve kterém je zabudována mimo jiné i podpora pro herní zařízení, zejména pro různé druhy joysticků.

Poslední vážnou nevýhodou je nemožnost tvorby složitějších prvků grafického uživatelského rozhraní, jako jsou tlačítka, seznamy, výběrové boxy, editační pole, scrollbary apod. V knihovně GLUT je podporováno pouze vytváření samostatných oken, suboken, překryvných oken (overlay) a tvorba vyskakovacích (pop-up) menu, která mohou být svázána s některým tlačítkem na myši. Tato minimalistická koncepce sice vychází z nutnosti podporovat jen podmnožinu GUI prvků dostupných na všech platformách, nicméně pro složitější aplikace (z hlediska grafického uživatelského rozhraní, ne nutně funkčnosti) by bylo vhodné do knihovny doprogramovat i některé složitější prvky.

V dalším dílu si ukážeme, jakým způsobem lze pomocí příkazů GLUT vytvořit a zobrazit okna, do kterých je možné vykreslovat (renderovat) 2D a 3D tělesa pomocí příkazů OpenGL. Dále si ukážeme způsob tvorby suboken (tj. rozdělení jednoho okna na okna menší) a přepnutí zobrazení jednoho okna přes celý desktop (takzvaný režim full-screen).

Reference

[1] Phil Karlton: <i>OpenGL Graphics with the X Window System, Ver. 1.0</i>,

Silicon Graphics, April 30, 1993.



[2] Kilgard, Mark J.: <i>OpenGL and X, Part 2: Using OpenGL with Xlib</i>,

The X Journal, SIGS Publications, January/February 1994.

[3] Kilgard, Mark J.: ''OpenGL and X, Part 3: Integrating OpenGL with Motif '',

The X Journal, SIGS Publications, July/August 1994.

[4] Kilgard, Mark J.: <i>An OpenGL Toolkit</i>,

The X Journal, SIGS Publications, November/December 1994.

[5] Kilgard, Mark J.: <i>Programming OpenGL for the X Window System</i>,

Addison-Wesley, ISBN 0–201–48359–9, 1996.

[6] Kolektiv autorů: <i>GLUT Page</i> (dokumentace ke knihovně GLUT)

www.opengl.or­g/developers/do­cumentation/glut­.html

 

[7] Kilgard, Mark, J.: <i>GLUT Specification</i> (specifikace GLUTu, existuje i PDF verze)

www.opengl.or­g/developers/do­cumentation/glut/spec­3/spec3.html

[8] Kolektiv autorů: <i>Frequently Asked GLUT Questions</i> (často kladené otázky o knihovně GLUT)

www.opengl.or­g/developers/do­cumentation/glut/glut­_faq.html

[9] Nate R.: <i>GLUT for Windows 32</i> (popis a download implementace knihovny GLUT pro operační systémy Microsoft Windows)

www.xmission.com/~na­te/glut.html

[10] Stetten George and Crawford Korin: <i>GlutMaster version 0.3</i> (objektové rozšíření knihovny GLUT pro práci s C++)

www.stetten.com/ge­orge/glutmaster/glut­master.html 

Školení: Návrh a používání MySQL databáze

 

Naučte se používat jednu z nejrozšířenějších databází. Dozvíte se vše potřebné od návrhu až po samotné využití MySQL v projektech.

Školení pro všechny, kteří se chtějí naučit efektivně pracovat s MySQL nebo se v práci s touto databází zlepšit.

Přihláška a podrobné informace

Ohodnoťte jako ve škole:
Průměrná známka 2,91

Přehled názorů

gtk+opengl
kokot 6. 5. 2003 10:00
Nový
odkazy jsou (zatim :) nefukcni
Filip Andres 6. 5. 2003 12:17
Nový
Jestli jsem to dobre pochopil
Miloslav Ponkrác 6. 5. 2003 19:26
Nový
└ 
Re: Jestli jsem to dobre pochopil
Pavel Tisnovsky 7. 5. 2003 10:10
Nový
 
└ 
Re: Jestli jsem to dobre pochopil
Miloslav Ponkrác 7. 5. 2003 13:25
Nový
 
 
└ 
Re: Jestli jsem to dobre pochopil
Pavel Tisnovsky 7. 5. 2003 14:49
Nový
 
 
 
└ 
Souhlasím
Miloslav Ponkrác 7. 5. 2003 20:02
Nový
odkazy
Pafal 10. 5. 2003 23:50
Nový
Portovanie grafickej MS-Dos aplikacie na X-Windows
Nepto 11. 5. 2003 12:06
Nový
├ 
Re: Portovanie grafickej MS-Dos aplikacie na X-Windows
Pavel Tisnovsky 12. 5. 2003 09:52
Nový
└ 
Re: Portovanie grafickej MS-Dos aplikacie na X-Win
Ivo Danihelka 13. 5. 2003 13:54
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem