OpenGL Utility Toolkit

OpenGL Utility Toolkit
GL Utility Toolkit
Entwickler Mark Kilgard
Aktuelle Version 3.7
(8. Dezember 1998)
Betriebssystem plattformunabhängig
Kategorie API
Lizenz Proprietär/Mark Kilgard
GLUT

Das OpenGL Utility Toolkit (GLUT) ist eine umfangreiche Bibliothek und Sammlung von OpenGL-Programmen, welche in erster Linie systemnahe Eingabe- und Ausgabeoperationen des jeweiligen Betriebssystems umsetzen. Dieses Toolkit beinhaltet dabei Funktionen zum Definieren von Fenstern, zur Steuerung dieser Fenster und zur Erfassung von Benutzereingaben. Es werden ebenfalls Funktionen bereitgestellt, die das Zeichnen von primitiven geometrischen Strukturen (als Wireframe oder solide Körper) ermöglichen. Die Strukturen umfassen Würfel, Kugeln, den Utah Teapot und weitere auf Dreiecken oder Vierecken basierende geometrische Formen. Zusätzlich stehen noch leicht limitierte Funktionen zur Erstellung von Popup-Menüs zur Verfügung.

GLUT wurde ursprünglich von Mark J. Kilgard, dem Autor von OpenGL Programming for the X Window System und The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics, während seiner Tätigkeiten bei Silicon Graphics Inc. entworfen und implementiert.

Die beiden Ziele des GL Toolkits waren die Erstellung von möglichst portablen Code für unterschiedliche Plattformen und das erleichternde Erlernen von OpenGL. Der Einstieg in OpenGL wird durch die Verwendung von GLUT stark erleichtert, da es durch Kapselung die Eigenheiten der Betriebssystem-spezifischen Funktionen verdeckt. So ist es möglich durch wenige Zeilen und relativ geringem Wissen umfangreiche OpenGL-Programme zu realisieren.

GLUT ist im Wesentlichen für kleine bis mittelgroße Projekte geeignet und bietet eine Schnittstelle für die Sprachen C, C++, Fortran und Ada.

Alle GLUT-spezifischen Funktionen beginnen immer mit dem Prefix glut. Zum Beispiel initialisiert der Aufruf glutInit(&argc, argv); das GLUT-System in C/C++.

Inhaltsverzeichnis

Implementierungen

Das ursprüngliche GLUT von Mark Kilgard unterstützte nur das X Window System in Form von GLX. Es wurde später auch für Microsoft Windows in Form von WGL und für Mac OS X in Form von NSGL/CGL portiert.

Kilgards GLUT Implementierungen wird seit längerem nicht mehr gewartet und die zugrundeliegende Lizenz gestattet keine Redistribution oder eine modifizierte Form. Dies führte zu mehreren vollständigen Reimplementierungen, vorzugsweise als Open-Source-Varianten.

Die erste freie Implementierung freeglut strebte eine 100 % kompatible Version an. Sie führte zusätzlich ein paar wenige neue Funktionen ein, um einige Limitierungen der ursprünglichen GLUT-Version besser korrigieren zu können.

Die zweite große Reimplementierung openglut ist ein Fork der freeglut-Version und strebt eine Erweiterung der ursprünglichen Funktionalität an. Der Fortschritt kam im Mai 2005 allerdings zum Stillstand.

Einschränkungen

Einige der Designentscheidungen der ursprünglichen GLUT-Version machen es dem Entwickler fast unmöglich bestimmte Aufgaben umzusetzen. Dies führte zu sehr vielen eher unerwähnten und/oder unbekannten Patches und Erweiterungen. Einige Projekte führen sogar eigene Reimplementierungen und Korrekturen ein.

Einige der bekannten GLUT Limitierungen sind folgende:

  • Der Entwickler muss immer den Aufruf glutMainLoop() tätigen, aber dieser Aufruf kehrt nie zurück. Dieses Verhalten macht es für Entwickler fast unmöglich GLUT in Programmen zu verwenden, welche die vollständige Kontrolle über ihrer Ereignis-Schleifen selbst behalten möchten. Eine verbreitete Korrektur für dieses Problem ist die Einführung einer Funktion (meist glutCheckLoop() genannt), welche nur eine einzelne Iteration der GLUT-Ereignis-Schleife ausführt. Ein andere oft verwendete Methode ist die Auslagerung der GLUT-Ereignis-Schleife in einen Thread. Diese Variante ist allerdings stark abhängig vom verwendeten Betriebssystem und führt oft zu ungewollten Synchronisationsproblemen.
  • Die Tatsache, dass glutMainLoop() nie zurückkehrt, führt dazu, dass eine Applikation mit GLUT nie normal endet. freeglut korrigiert dieses Problem durch die Einführung der Funktion glutLeaveMainLoop(), die einen konformen Abbruch von glutMainLoop() erzwingt.
  • GLUT terminiert das Programm bzw den Prozess, wenn das eigentliche Darstellungsfenster geschlossen wird. Für einige Applikation kann dies ein unerwünschtes Verhalten sein. Um dieses Problem zu umgehen führen einige Reimplementierungen einen zusätzlichen Callback wie zum Beispiel glutWMCloseFunc() ein.

Da die ursprüngliche GLUT-Version nicht mehr weiter gepflegt wird, wurde sie mehr oder weniger durch die Open-Source-Variante freeglut abgelöst.

Kontroverse

Die verschiedenen GLUT-Versionen liegen in Quelltextform vor und unterstützen etliche Plattformen. GLUT ist aber weder Public Domain noch Open Source und darf daher nicht verändert weitergeben oder erweitert werden.

Siehe

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • OpenGL Utility Toolkit — Developer(s) Mark Kilgard Operating system Cross platform The OpenGL Utility Toolkit (GLUT) is a library of utilities for OpenGL programs, which primarily perform system level I/O with the host operating system. Functions performed include window …   Wikipedia

  • Opengl utility toolkit — GLUT (OpenGL Utility Toolkit) est une bibliothèque utilitaire dont les droits d auteur sont détenus par Mark J. Kilgard, offrant un jeu de routines pour la gestion des fenêtres OpenGL et les interactions avec le système d exploitation (gestion… …   Wikipédia en Français

  • OpenGL utility toolkit — GLUT (OpenGL Utility Toolkit) est une bibliothèque utilitaire dont les droits d auteur sont détenus par Mark J. Kilgard, offrant un jeu de routines pour la gestion des fenêtres OpenGL et les interactions avec le système d exploitation (gestion… …   Wikipédia en Français

  • OpenGL Utility Toolkit — …   Википедия

  • OpenGL Utility Library — (GLU) ist eine Grafikbibliothek. Aufsetzend auf OpenGL bietet GLU Grafikfunktionen höherer Ebene. Sie ist Teil des OpenGL Pakets. Es existieren drei bedeutende Implementierungen der GLU: Microsoft GLU, in Windows enthalten, implementiert GLU 1.2… …   Deutsch Wikipedia

  • OpenGL Utility Library — The OpenGL Utility Library (GLU) is a computer graphics library. It consists of a number of functions that use the base OpenGL library to provide higher level drawing routines from the more primitive routines that OpenGL provides. It is usually… …   Wikipedia

  • OpenGL — Original author(s) Silicon Graphics Developer(s) Khronos Group Stable release 4.2 …   Wikipedia

  • Opengl — Entwickler: Khronos Group Aktuelle Version: 3.1 (24. März 2009) Betriebssystem: plattformunabhängig Kategorie …   Deutsch Wikipedia

  • Opengl user interface library — (GLUI) est une bibliothèque en C++ qui se combine avec celle de OpenGL utility toolkit (GLUT) et qui fournit diverses routines pour créer l interface d un programme entièrement avec OpenGL. L interface est alors indépendante du système d… …   Wikipédia en Français

  • OpenGL user interface library — (GLUI) est une bibliothèque en C++ qui se combine avec celle de OpenGL utility toolkit (GLUT) et qui fournit diverses routines pour créer l interface d un programme entièrement avec OpenGL. L interface est alors indépendante du système d… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”