OpenGL.org 3Dsource.de: Infos rund um 3D-Computergrafik, OpenGL und VRML
space Telefon-Tarife space VDI - Arbeitskreis Fahrzeugtechnik space Beschallungsanlagen und Elektroakustik space Heise-News space

Bibliotheken, Tools, Tipps

Ich habe hier einige Lösungen aufgelistet, wie man OpenGL unter verschiedenen Systemen oder Compilern zum laufen bekommt. Beispielprogramme findet ihr auf der (nächsten) Seite mit den Quelltexten. Grundsätzliche Techniken werden (auf englisch) im Red Book erläutert, da kann ich sowieso nicht mithalten...

Darüber hinaus hat Paul Martz eine offizielle OpenGL FAQ zusammengestellt, die ihr auf meinen Seiten auch in einer deutschen Version findet.


Erste Schritte mit OpenGL und MS Windows:

geeignete IDE's und Compiler

Für meine OpenGL-Programme habe ich bisher von Borland den Builder(1.0) und BC++ 5.x ausprobiert. Von MS den VC++6.0. Bei den freien Compilern verfüge ich zwar über keine Erfahrungen, aber es gibt ja auch noch andere Seiten im Netz... z.B. die offizielle FAQ.

Nach langem Hin und Her bevorzuge ich jetzt doch VC++, trotz anfänglicher Skepsis ;-)

  • Borland C++:
    Diese IDE stellt viele Unix-typische Header etc. zur Verfügung und macht damit ein plattform-übergreifendes Programmieren relativ leicht. Auch die Hilfe ist recht brauchbar (und nimmt nicht allzu viel Platz auf der Festplatte in Anspruch ;-). Durchaus zu empfehlen...
  • Borland Builder:
    Macht die Erstellung von Fenstern und dem ganzen Kram wirklich leicht. Dafür muss man allerdings einen relativ grossen Overhead (grosse Dateien) in Kauf nehmen. Diese Version habe ich an der Uni getestet und aufgrund einiger Abstürze (Dateien werden leider nicht automatisch gesichert) dann irgendwann mal nicht mehr so gerne genommen :-(
  • MS Visual C++:
    Ich habe zwar nur die Standard-Version (u.a. ohne Optimierungen)... Am meisten hat mich hier die zwangsweise Installation des IE gestört. Und die 50 MByte Schrott (*.pcb oder so) im windows/system Verzeichnis musste ich auch erst manuell rausschmeissen. Von dem blöden MSDN ganz zu schweigen (was nutzen mir 1,3 GByte auf der CD, wenn ich die notwendigen -kleinen- Hilfedateien nicht auf der Festplatte ablegen kann ?? :-(
    Dafür ist dieses Teil aber stabil, die automatische Debug-Option bei allen Programmabstürzen hilft, Fehler leicht zu finden, Standard-Funktionen werden automatisch mit ihrer Deklaration angezeigt usw. Ich habe mich dran gewöhnt und bevorzuge diese IDE jetzt doch. Natürlich nur unter MS Win, an den Xemacs unter Linux kommt MS nicht heran ;-))

[zum Seitenanfang]


Besonderheiten und typische Fehlermeldungen

Man braucht immer die passenden *.libs (VC++ und Borland libs sind verschieden !). Also immer die Dateien opengl32.lib, glu32.lib und bei Bedarf glut32.lib hinzufügen. (sonst droht ein undefined __gl* etc.).

Ausserdem muss die Datei "windows.h" vor den OpenGL Headern per #include eingefügt werden. Sonst erhält man schnell ein undefined WINGDIAPI.

#ifdef _WIN32
#include <windows.h>
#endif

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

Dass man auch mit reinen Win32-Befehlen eine brauchbare Oberfläche zusammen bekommt, habe ich mal mit VCC ausprobiert. Meinen -unvollständigen, aber lauffähigen- Versuch will ich euch auch nicht vorenthalten (35 KB).

Bevor man aber versucht, Fenster mit den Basisfunktionen von Win32 zu erstellen, oder die überdimensionierte Lösung MFC nutzt, würde ich in jedem Fall erstmal mit GLUT anfangen. Schon alleine wegen der Beispielprogramme...

[zum Seitenanfang]


Update der OpenGL Version

Um bei Borland von OpenGL1.0 auf OpenGL1.1 zu wechseln, müssen nur die entsprechenden *.dll, *.lib, *.h ausgetauscht werden. Das sollte bei den hier abgelegten Dateien der Fall sein. Diese müssen nur in die Verzeichnisse (dll - windows/system, lib - BC5/lib, h - BC5/include/GL) kopiert werden.

[zum Seitenanfang]


OpenGL mit dem Borland Builder:

Da das Setup von OpenGL ein paar Zeilen mehr einnimmt, spar' ich mir hier mal die Ausführungen. Ein einfaches Beispielprojekt und die benötigte Bibliotheken habe ich ins Netz gestellt.

[zum Seitenanfang]


GLUT mit Borland C++ 5.x:

Da GLUT uns den ganzen Fensterkram abnimmt, kann ich mich hier aufs wesentliche konzentrieren. An der Uni hatten wir allerdings nur die englische Version vom BC...

1. Borland starten, neues Projekt anlegen,
2. Target Type  = App[.exe],
3. Platform = Win32,
4. Target Model = Console,
5. Frameworks = Class Lib,
    Zum Projekt muss noch die Datei glut32.lib hinzugefügt werden.
6. Dein Quelltext: ...

Mit diesen Einstellungen kann man eigentlich jedes GLUT-Programm verwenden.

[zum Seitenanfang]


GLUT mit dem Borland Builder:

Anfangs war ich überzeugt, dass das eigentlich gar nicht geht... Schliesslich öffnet der BCB ja automatisch ein Fenster - und GLUT dann das zweite. Naja, war wohl ein Trugschluss. ;-(

Irgendwo unter Optionen kann man zwischen GUI und Textmodus wählen.

1. Text == Konsole ist dabei genau richtig,
2. dann lässt man nur die Datei mit der main-Funktion im Projekt,
3. jetzt löscht man alle Zeilen ausser #include <vcl.h>,
4. nun das Eingeben/Kopieren der normalen GLUT-Beispielprogramme,
5. und die glut32.lib zum Projekt hinzufügen.

Die ersten Zeilen im Programm könnten jetzt etwa so aussehen:

#include <vcl.h>
#pragma hdrstop
  USELIB("\BCB_Verzeichnis\Lib\glut32.lib");
#include <GL/glut.h> // gl.h und glu.h werden hierdurch auch eingefügt

Eigentlich ja recht einfach, oder ? Auf das euch der BCB nicht zu häufig abstürzt... Ein Demo-Projekt gibts natürlich auch.

[zum Seitenanfang]


GLUT mit MS Visual C++:

Hier nur die wesentlichen Schritte:

1. VC++ starten, neues Win32-Konsolen-Projekt,
2. Projekt->Einstellungen->Linker->Module: opengl32.lib glu32.lib glut32.lib hinzufügen.

Der Rest wie gehabt... Beispielprogramme kommen mit der GLUT-Distribution.

[zum Seitenanfang]


OpenGL unter Unix:

Langsam, langsam, ich sollte den Mund hier mal nicht zu voll nehmen... Meine Erfahrungen mit den verschiedenen uNixen beschränkt sich nämlich nur auf Linux, IRIX, HP-UX und SINIX. Und mit OpenGL hatte ich nur auf den ersten beiden was am Hut. ;-)

Einstieg

Zum Übersetzen hat sich bei mir eine Sammlung entsprechender Makefiles (in jedem Verzeichnis) und eine systemabhängige "rules"-Datei bewährt. Hat mir jemand an der Uni gezeigt. Bei mir heisst diese Datei "make.rules" und wird als Softlink auf die entsprechende Datei (make.rules.linux, make.rules.sgi) z.B. mit "ln -s make.rules.linux make.rules" gesetzt.

In diesem (41 KB) Archiv ist zwar die Motif-Version enthalten, für das Prinzip der Makefiles reicht das aber. Ansonsten muss man im Makefile folgende Sektionen/Anweisungen definieren:

- include make.rules (die angesprochene "rules"-Datei),
- STUFF (welche Unterverzeichnisse werden genutzt),
- INCPATH (wo stehen die benötigten Header ?),
- OBJS (welche *.o Dateien müssen hinzugelinkt werden ?),
- MYLIBS (falls in den Unterverzeichnissen eigene Bibliotheken erzeugt wurden),
- LIBS (die benötigten Systembibliotheken),
- all:, depend: etc. (was soll das Makefile machen ?),

In der Regel heissen die OpenGL-Bibliotheken libGL.so und libGLU.so und sind in einem Standard-Pfad gespeichert. Gelinkt werden diese durch das Kommando "-lGL -lGLU". Am besten, ich nutze gleich mal Linux als Beispiel:

Linux

Die make.rules.linux legt die noch unbekannten Grössen fest.

- DEPEND (was wird für ein "make depend" - selbständiges Suchen der benötigten Dateien - gebraucht ?),
- CC, LD (welcher Compiler/Linker soll genutzt werden ?,
- CPUFLAGS, CXXOPTS, LDFLAGS (Optionen für Compiler und Linker),
- XINCS (Include-Pfad für die X-Window-Bibliotheken),
- XLIBS, GLLIBS, MLIBS (welche Bibliotheken werden gebraucht ?),
- .SUFFIXES: (wie sollen bestimmte Dateiendungen behandelt werden ?),

Unter Linux habe ich eine zeitlang eine Voodoo2 genutzt, jetzt steht mir allerdings nur noch eine Softwarelösung zur Verfügung... Notebook machts möglich ;-) Die benötigten Dateien habe ich im Verzeichnis des X-Window-Systems untergebracht (*.so => /usr/X11R6/lib, *.h => /usr/X11R6/include/GL). Ausserdem habe ich die Softlinks libGL.so, libGLU.so zu den entsprechenden Mesa-Dateien hergestellt. Seit Mesa3.1-beta3 sind diese bereits dabei ;-)).

Für die ersten Schritte ist es wirklich sinnvoll, GLUT zu nutzen. Ich habe zwar auch mit Motif (einem sogenannten Widget-Set für den X-Server unter Unix) gearbeitet, allerdings ist (und gilt) diese API als recht träge und unhandlich. Eine andere, ebenfalls plattformunabhängige Lösung stellt FLTK dar, hier kann man Oberflächen sogar mit der Maus zusammenstellen.

[zum Seitenanfang]


OpenGL mit Motif (UNIX):

Während meines Studiums hatte ich das Vergnügen, unser Simulationsprogramm ORSIS um eine 3D-Visualisierung zu ergänzen. Dummerweise war die vorhandene Oberfläche mit Motif bereits ziemlich umfangreich... Also musste OpenGL in einem Motif-Fenster unter Linux und IRIX (SGI-Workstation) funktionieren.

Andererseits wollte ich den Quelltext auch zu Hause ausprobieren -mit Linux und mit Win32-. Ich habe mein Programm dann so aufgebaut, dass die Oberfläche strikt vom Rest getrennt bleibt und Motif genauso wie der Borland Builder für die Knöpfe etc. genutzt werden kann.

Genug Gelaber; den Quelltext findet ihr hier (41 KB).

[zum Seitenanfang]


spezielles OpenGL-Fenster für Motif auf SGI's IRIX-Systemen:

Ich habe unter anderem auch mit Motif auf Linux- und IRIX-Systemen gearbeitet. Dabei gab's ein paar Probleme auf der älteren SGI-Maschine mit der normalen DrawingArea. Irgendwo habe ich dann etwas über ein spezielles OpenGL-Widget gelesen, das in der libGLw.a enthalten sein sollte. Bloss, die Datei gab's auf der Kiste nicht !! Naja, zum Glück gibt es ja freie Software mit Source... Ich bin dann bei Mesa fündig geworden. Den extrahierten Quellcode mit eigenem Makefile findet ihr hier.


GLUT für MS Win32 (dll, lib, h)

Die Dateien aus der Version 3.7beta findet ihr hier (69 KB).

[zum Seitenanfang]


OpenGL für MS Win32

Die dlls von MS (veraltet !) findet ihr hier (350 KB). Falls deine Grafikkarte mit OpenGL-Treibern kommt oder dein System neuer als Windows95B ist, brauchst Du die aber nicht (Stand 03/2003: jedes halbwegs aktuelle System installiert die OpenGL-dlls von alleine).

Ansonsten läuft OpenGL auch nur im Software-Modus (was z.B. mit einer alten 2D Hercules Dynamite gar nicht mal so langsam war... ;-)

Die dlls von SGI findet ihr hier (562 KB). Sie unterscheiden sich von der MS-Version im Dateinamen (opengl.dll und glu.dll anstatt opengl32.dll, glu32.dll), sind für alle MS Systeme ab Win95, NT4.0 geeignet, nutzen automatisch die vorhandenen *32.dlls (und damit Hardware-Beschleunigung) und werden nur selten benötigt...

Mein Tip: falls ihr mit den reinen Win32-Funktionen Fenster programmieren wollt, ladet am besten gleich das komplette SDK (Software Development Kit, Beispiele, Hilfedateien) herunter. Ihr findet es hier (ca. 2 MB).

[zum Seitenanfang]


OpenGL für Borland

Fast alle *.lib, die man im Netz findet, sind für MS VCC und funktionieren leider nicht mit den Borland Compilern. Zur Lösung dieses Problems kann man zum Beispiel die benötigten libs aus den vorhandenen dlls erzeugen (BC/bin/implib.exe). Allerdings klappt das nicht immer... Ich habe deshalb mal meine Dateien (opengl32.lib, glu32.lib, gl.h, glu.h) hier hinterlegt (33 KB).
Getestet sind sie mit Borland C++ 5.x und Builder 1.0.

[zum Seitenanfang]


OpenGL für MS Visual C++ 6.0

Falls ihr im Verzeichnis VCC/lib bzw. VCC/include/GL die Dateien (opengl32.lib, glu32.lib, gl.h, glu.h) nicht findet: Hier sind sie (29 KB).

[zum Seitenanfang]


OpenGL für Linux

Sorry, hier findet ihr nix zum runterladen... Dafür gibt's nämlich viel bessere Seiten :-)

Stand 03/2003: Die meisten Distributionen installieren alles für OpenGL automatisch. Die meisten Grafikkarten laufen mit Mesa und DRI hardwarebeschleunigt, nur NVidia nutzt eigene Dateien dafür.

[zum Seitenanfang]


OpenGL-Motif DrawingArea

Im Mesa-Paket ist auch ein spezielles Fenster für Motif enthalten. Den extrahierten Quellcode mit eigenem Makefile findet ihr hier.

Seite durchsuchen nach:

Fragen oder Ideen an:
Thomas.Kern@3Dsource.de
Linux-Counter
(C) Thomas Kern