Instant-Windows

Einfache Programmierung von GDI und OpenGL

Test & Kaufberatung | Kurztest

Eine wundervolle Utopie: Die GDI- und OpenGL-Funktionen von Windows 95 und NT zu nutzen, ohne sich um die komplexe Programmierung dieser Systeme zu kümmern. MGI macht diesen Traum wahr.

MGI ist eine C/C++-Bibliothek für Win32. Sie implementiert mittels parallel laufender Threads eine eigene Fensterverwaltung und stellt die nötigen Funktionen bereit, um in diesen Fenstern zwei- und dreidimensionale Grafiken darzustellen. MGI übernimmt dabei für 'seine' Fenster das gesamte Eventhandling. Dadurch lassen sich schnell und unkompliziert Windows-Grafikbefehle nutzen, ohne daß man sich mit der aufwendigen Windows-Programmierung auseinandersetzen muß. Ein

int main() {   CreateWind("Mein Grafik-Fenster",500,350,4,240,FALSE);   Sphere(1.0,32,32,FILLED,SMOOTH,OUTSIDE);   ShowWnd (pMyWnd);   char ch=getch(); }

genügt etwa, um eine Kugel auf den Bildschirm zu bringen.

MGI bedient sich der Windows-Grafikbibliotheken GDI und OpenGL. Es kapselt deren Routinen und leitet die Ausgaben an die jeweiligen Fenster weiter. Dabei können die Befehle beliebig gemischt werden. Allerdings flimmern die 2D-Objekte, sobald sich die Szene dreht. Dies ließe sich nur schwer vermeiden, da das GDI seine Ausgabe erst auf dem Bildschirm in das OpenGL-Fenster 'einstanzt'.

Im 2D-Bereich lassen sich beispielsweise Linien, Kreise und Rechtecke zeichnen sowie Stift und Zeichensatz wechseln. Intern speichert MGI die Grafikbefehle in einer Liste und arbeitet diese beim Neuzeichnen des Fensters automatisch ab, so daß sich der Programmierer darum nicht kümmern muß. Das Wesentliche ist, daß dieser Mechanismus auch funktioniert, wenn das Hauptprogramm mittels getch() auf Eingaben wartet.

Der interessantere Teil der Bibliothek ist aber der 3D-Bereich. Die wichtigsten OpenGL-Befehle sind verfügbar, inklusive einiger komplexerer Funktionen, die das Zeichnen kompletter Kegel, Quader und Sphären gestatten. MGI erlaubt aber nicht nur die statische Ansicht der Objekte, sondern ermöglicht Zoomen und Drehen der Szene mittels Maus und Tastatur. Dabei stehen verschiedene Modi zur Auswahl: So kann man die Szene zum Beispiel nur rotieren lassen oder auch durch sie hindurchfliegen.

Der Klick mit der rechten Maustaste in ein MGI-Fenster führt zu einem Kontextmenü. Dort läßt sich unter anderem die Darstellungsart der 3D-Objekte festlegen: ausgefüllt, als Drahtgittermodelle oder reine Ansammlung von Punkten. In Dialogen läßt sich die Betrachterposition wählen, ebenso kann der Benutzer bis zu acht Lichtquellen setzen.

Die Befehle sind in Standard-C gehalten, obwohl MGI intern objektorientiert aufgebaut ist. Die Konzeption selbst ist offen und läßt sich vom Anwender beliebig erweitern - Kenntnisse in C++ vorausgesetzt.

Die Bibliothek enthält DLLs und Libraries für Borland- und Microsoft-C(++)-Compiler sowie zahlreiche Beispielprogramme. Die Dokumentation besteht aus grafisch ansprechenden und vor allem ausführlichen HTML-Seiten. Das Programm ist Shareware, hat aber keine Funktionseinschränkungen; es gibt lediglich Sharewaremeldungen in der Statusleiste und beim Öffnen eines Grafikfensters. Nach Ende der 60tägigen Evaluierungsperiode ist die Anzahl der Objekte auf 60 begrenzt.

MGI wird ständig weiterentwickelt. Die aktuelle Version (1.04) enthält noch kleinere Ungereimtheiten. So hat die Funktion ClearWind(), mit der ein Neuzeichnen der 3D-Objektliste erzwungen wird, noch nicht den Weg in die Online-Dokumentation gefunden. Auch erhält man derzeit (noch) keine Informationen über die Mausposition im Grafikfenster, etwa zur Eingabe von Punkten. Aber dies ändert nichts an dem hervorragenden Eindruck, den MGI hinterlassen hat. Herauszuheben ist an dieser Stelle auch der prompte Support durch den Programmautor. Und wenn er hält, was er in seiner ToDo-Liste ankündigt - nämlich eine kompatible Version für Unix-Plattformen - wird MGI noch um einiges interessanter. Kurzum, MGI ist durchaus mehr als nur einen Blick wert. (jm)


MGI 1.04 (Shareware, 49 US-$, 24 US-$ Studentenversion, 98 US-$ kommerzielle Version) gibt's unter http://www.datacomm.ch/marcus/MGIShare.exe und in der c't-Mailbox.

Anzeige