OpenGL Utility Toolkit - OpenGL Utility Toolkit
Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto problémech na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
Vývojáři | Mark Kilgard |
---|---|
Operační systém | Cross-platform |
Plošina | Cross-platform |
Typ | API |
webová stránka | www |
The OpenGL Utility Toolkit (NADBYTEK) je knihovna nástrojů pro OpenGL programy, které primárně provádějí na úrovni systému I / O s hostitelem operační systém. Mezi prováděné funkce patří definice okna, ovládání okna a monitorování klávesnice a myš vstup. K dispozici jsou také rutiny pro kreslení řady geometrických primitiv (v režimu pevných i drátových modelů), včetně kostky, koule a Utah čajová konvice. GLUT má také omezenou podporu pro vytváření rozbalovacích nabídek.
GLUT napsal Mark J. Kilgard, autor Programování OpenGL pro X Window System a Výukový program Cg: Definitivní průvodce programovatelnou grafikou v reálném čase, zatímco pracoval pro Křemíková grafika Inc.
Dva cíle GLUT jsou umožnit vytvoření poměrně přenosného kódu mezi operačními systémy (GLUT je napříč platformami ) a usnadnit učení OpenGL. Začínáme s programováním OpenGL při používání GLUT často trvá jen několik řádků kódu a nevyžaduje znalost oken specifických pro operační systém. API.
Všechny funkce GLUT začínají nadbytek
předpona (například glutPostRedisplay
označí aktuální okno jako nutné překreslení).
Implementace
Originální knihovna GLUT od Marka Kilgarda podporuje Systém X Window (GLX ) a byl přenesen do Microsoft Windows (WGL ) od Nate Robins. Dodatečně, Operační Systém Mac dodává se s rámcem GLUT, který podporuje jeho vlastní NSGL /CGL.
Kilgardova knihovna GLUT již není udržována a její licence neumožňovala redistribuci upravených verzí knihovny. To vyvolalo potřebu svobodný software nebo otevřený zdroj opětovné implementace API od nuly. První taková knihovna byla FreeGLUT, jehož cílem je rozumně blízká reprodukce, i když zavádí malý počet nových funkcí pro řešení omezení GLUT. OpenGLUT, a Vidlička FreeGLUT, přidává do původního API řadu nových funkcí, ale práce na něm byly zastaveny v květnu 2005.
Mark Kilgard má úložiště GitHub pro GLUT.[1] Hlavičkový soubor glut.h obsahuje následující licenci:[2]
/ * Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998, 2000, 2006, 2010. * // * Tento program je volně distribuovatelný bez licenčních poplatků a je poskytován bez záruky nebo záruky vyjádřené nebo předpokládané. Tento program není - není - ve veřejné doméně. * /
Omezení
Některá původní rozhodnutí GLUT o designu znemožňovala programátorům provádět požadované úkoly. To vedlo mnoho lidí k vytvoření ne-kanonických oprav a rozšíření GLUT.[1] Nějaký svobodný software nebo otevřený zdroj reimplementace také zahrnují opravy.
Některá z pozoruhodnějších omezení původní knihovny GLUT zahrnují:
- Knihovna vyžaduje volání programátorů
glutMainLoop ()
, funkce, která se nikdy nevrátí. To programátorům ztěžuje integraci GLUT do programu nebo knihovny, která si přeje mít kontrolu nad svou vlastní smyčkou událostí. Běžnou opravou je zavedení nové funkce s názvemglutCheckLoop ()
(macOS) neboglutMainLoopEvent ()
(FreeGLUT / OpenGLUT), který spouští pouze jednu iteraci smyčky události GLUT. Dalším běžným řešením je spustit smyčku událostí GLUT samostatně vlákno, i když se to může lišit podle operačního systému, a také se může představit synchronizace problémy nebo jiné problémy: vyžaduje to například implementace macOS GLUTglutMainLoop ()
být spuštěn v hlavním vlákně. - Skutečnost, že
glutMainLoop ()
Nikdy se nevrátí také znamená, že program GLUT nemůže ukončit smyčku události. FreeGLUT opravuje to zavedením nové funkce,glutLeaveMainLoop ()
. - Knihovna ukončí proces, když je okno zavřeno; u některých aplikací to nemusí být žádoucí. Mnoho implementací tedy zahrnuje další zpětné volání, například
glutWMCloseFunc ()
.
Protože již není udržován (v zásadě nahrazen otevřený zdroj FreeGLUT ) výše uvedené problémy s designem stále nejsou v původním GLUTU vyřešeny.
Viz také
- EGL je rozhraní mezi OpenGL ES nebo OpenVG a a okenní systém.
- FreeGLUT je zamýšlen jako úplná náhrada za GLUT a má jen několik rozdílů.
- GLFW
- Jednoduchá vrstva DirectMedia (SDL)
- Knihovna uživatelského rozhraní OpenGL (GLUI)
- Knihovna OpenGL Utility (GLU)
Reference
externí odkazy
- GLUT - OpenGL Utility Toolkit
- OpenGL Utility Toolkit (GLUT) Programming Interface API verze 3 (oficiální dokumentace)
- Soubory ke stažení OpenGL Utility Toolkit (GLUT) (zdrojové a předkompilované knihovny)