Computergrafik

OpenGL Komponenten

Transformationsbeispiel | | OpenGL Context

OpenGL = Open Graphics Library

Das Prinzip von OpenGL beruht auf der Abstrahierung der 3D HW-Grafik-Pipeline.

Es wird unterschieden zwischen Kernfunktionalität und Hilfskomponenten:

  • GL
    • OpenGL Kern
    • C-API
    • Header: GL/gl.h
    • Library: libGL.so
  • GLU
    • OpenGL Utilities: hilfreiche OpenGL Kommandos
    • Header: GL/glu.h
    • Library: libGLU.so
  • GLUT
    • GL Utility Toolkit
    • Open-Source Version: FreeGLUT
    • Window Management und Event Handling
    • Header: GL/glut.h
    • Library: libglut.so
    • setzt unter Windows auf MFC auf
    • setzt unter MacOS auf Cocoa auf
    • setzt unter Linux auf X11 auf
    • Erzeugt mit obigen Bibliotheken einen OpenGL Rendering Context
  • GLX
    • Schnittstelle zwischen X11 und OpenGL
    • Verantwortlich für die Anbindung der HW an den aktuellen OpenGL Context (Zeichenfenster)
  • GL Extensions
    • Definition der OpenGL Erweiterungen, die von einer bestimmten Grafikkarte unterstützt werden
    • Header: GL/glext.h
  • GLEW
    • GL Extensions Wrapper
    • Abstraktion der GL Extensions zur einfacheren Benutzung

Das sind nun sehr viele beteiligte Komponenten. Zur Vereinfachung verwenden wir nicht GLUT sondern die Qt Bibliothek, welche die obigen Komponenten mit Hilfe einer abstrahierten Klasse bereitstellt:

  • QT UI Toolkit
    • Enthält C++Klasse QOpenGLWindow, welche analog zu GLUT ebenfalls einen Kontext erzeugen kann
    • Modernere C++-API
    • Um mit OpenGL etwas in den Kontext zu zeichen, implementiert man die folgenden virtuellen bzw. abstrakten Methoden:
      • virtual void initializeGL()
      • virtual void paintGL()


Transformationsbeispiel | | OpenGL Context

Options: