Welfenlab - Leibniz 
                        Universitńt Hannover Welfenlab Leibniz Universitńt Hannover

Labor Grafikprogrammierung

Wochenstunden 1 Vorlesung + 1 ├ťbung
Pr├╝fungsart Labor├╝bung
Frequenz j├Ąhrlich (Sommersemester)
Credit Points 6, unbenotet

Hinweis: Dieses Labor wurde grundlegend ├╝berarbeitet. Eine aktualisierte Zusammenfassung der Inhalte finden Sie weiter unten.

Zielsetzung

 

Ziel dieses Kurses ist es, den Aufbau moderner Grafikhardware (wie z.B. aktueller GeForce/Radeon Grafikkarten) kennen zu lernen und deren Funktionsweise nachzuvollziehen.

 

Im Rahmen dieser Veranstaltung wird neben der direkten Verwendung der Grafikkarte durch die OpenGL Schnittstelle auch ein einfacher Software-Renderer programmiert. Dieser ist der Struktur einer modernen Grafikpipeline nachempfunden und erm├Âglicht so einen Blick "Hinter die Kulissen" von z.B. Computerspielen und aktueller Grafikanwendungen. Auch aktuelle Konzepte, wie Shaderprogrammierung und visuelle Effekte, sind integraler Bestandteil dieses Kurses.

 

Die Abgaben des Labors werden in C++ programmiert. Um auch Programmieranf├Ąngern (Grundlegende Java-Kenntnisse sind ausreichend) gerecht zu werden, wird ein Framework bereitgestellt, welches Aufgaben wie GUI-Programmierung, Zeichenfunktionen, etc. auf ein Minimum reduziert.

 

Voraussetzungen

Auch wenn die Programmierung in C++ erfolgt, sind grundlegende Java-Kenntnisse ausreichend. Materialien f├╝r den schnellen Einstieg in C++ werden bei Bedarf bereitgestellt. Durch das vorgegebene Framework wird die Programmierung weitestgehend auf die Implementation einer vorgegebenen Klassenstruktur reduziert. Auf sprachspezifische Details wie Speicherverwaltung und Pointer-Strukturen muss nicht explizit eingegangen werden.

 

Empfohlen wird der Besuch der Vorlesung Graphische Datenverarbeitung I, in der die theoretischen Grundlagen einiger Aspekte des zu implementierenden Systems erkl├Ąrt werden.

 

Die Teilnehmer k├Ânnen in Kleingruppen (bis max. 2 Personen) zusammenarbeiten und m├╝ssen am Ende des Semesters ein komplettes Programm abgeben und alle Programmteile erkl├Ąren k├Ânnen.

 

Inhalte

 

Der Kurs gliedert sich in zwei Teile.

Im ersten Teil wird auf die Grundlagen der 3D-Visualisierung eingegangen. Die Teilnehmer programmieren Schritt f├╝r Schritt einen softwarebasierten Renderer, der beliebige Meshes darstellen kann. Das verwendete PLY-Format erm├Âglicht es den Teilnehmern mit Hilfe von Programmen wie Blender auch selbst kreativ zu werden.

Ausgehend von einer einfachen Darstellung als Punktwolke wird das Programm nach und nach zu einem vollwertigen Softwarerenderer ausgebaut. Dieser umfasst:

  • F├╝llen von Dreiecken
  • Interpolation von Farbinformationen
  • Einfache Texturierung
  • Verschiedene Beleuchtungsmodelle wie Flat-/ Gouraud- und Phong-Shading

Dar├╝ber hinaus werden auch Konzepte wie Z-Buffering, Vertex- und Pixelshader, Projektionsarten und Kamerasteuerung diskutiert und abgebildet.

 

Der zweite Teil greift die ├ťberlegungen des ersten Teils auf und zeigt, wie die erarbeiteten Strukturen auf moderne Grafikhardware ├╝bertragen werden k├Ânnen. Es wird gezeigt, wie mit Hilfe der OpenGL Grafikschnittstelle die bisherigen Ergebnisse um ein vielfaches beschleunigt werden k├Ânnen.

Bei der Einf├╝hrung in OpenGL wird konsequent auf die Version 3 der OpenGL-Spezifikationen gesetzt. Daher Umfasst dieser Kurs auch eine Einf├╝hrung in die Shaderprogrammierung.

Je nach zur Verf├╝gung stehender Zeit werden folgende Themen behandelt:

  • VertexBufferObjects und VertexArrayObjects
  • Vertex- und Fragment-Shader
  • Texturemapping
  • FrameBufferObjects
  • Vollbild Effekte (wie z.B. Bloom, Hitzeflimmern, etc.)
Top | Last Change 12.03.2013 | Editorial Responsibility Philipp Blanke
| Imprint | © FG Graphische Datenverarbeitung