Regeln

In diesem Praktikum gelten grundsätzlich dieselben Regeln, die bereits für das Praktikum Grundlagen der Computergrafik definiert wurden.
Diese treffen in Teilen nicht auf die Grafikentwicklung mit modernen OpenGL-Versionen zu, widersprechen dieser jedoch nicht.
Des Weiteren gelten in diesem Praktikum die folgenden zusätzlichen Anforderungen. 

  • Beim Erzeugen des Fensters wird die in der Aufgabe geforderte OpenGL-Version explizit angegeben. Außerdem wird ein Kontext mit Kern-Profil angefordert. Die Nutzung von Funktionen, die nicht über das Kern-Profil zugreifbar sind (z.B. glBegin, glEnd), ist untersagt.
  • Beim Start der Anwendung muss die aktuelle OpenGL-Versionsnummer erfragt und ausgegeben werden. 
  • In Shadern muss die GLSL-Versionsnummer und das Profil mit #version explizit angegeben werden. Dies kann in einer Datei geschehen, die von allen Shadern eingebunden wird.
  • Shadercode muss aus Dateien eingelesen werden und darf nicht im Host-Programm in Strings definiert werden.

Hier findet Ihr die Regeln des Praktikums Grundlagen der Computergrafik.

Die Abnahme findet im MRZ auf Windows Systemen statt.
Es ist sicher zu stellen, dass die Programme unter Windows Systemen ohne Fehler bzw. Warnung kompilieren. (Achtung Windows != Linux ;) )
Es wird CMake verwendet für Projekterstellung.

Folgende Kompiler Flags sollen verwendet werden
Flags unter Windows: /W4 /WX /wd4996
Flags unter Linux: -Wall -Wno-long-long -Werror

Für das Debuggen oder die Optimierung können folgende Flags ergänzt werden
-g -O3

Es soll eine CMake Variable:
Common_External_Path geben, mit der der Pfad zu den externen Inhalten (hier insb. Modells) angegeben werden kann sowie.
Program_Name geben, die den Namen des Programmes sowie der Ausgabe Datei angibt.

Die CMakeLists.txt Dateien in den Samples und ggf. den Teillösungen beinhalten diese Anforderungen bereits.

 

Folgende Bibliotheken werden/können in dieser Übung genutzt werden:

CGLM - optimierte 3D Mathe Bibliothek für C https://cglm.readthedocs.io/en/latest/

Assimp - C/C++ Bibliothek zum importieren verschiedener Modelle-Datei-Formate http://www.assimp.org/

stb - Sammlung an Bibliotheken für Computer Grafik insb. OpenGL (insb. stb_image zum laden verschiedener Bildformate) https://github.com/nothings/stb

glad - GL/GLES/EGL/GLX/WGL Loader-Generator zum 'verknüpfen' der OpenGL Funktionen mit der Hardware Spezifischen Implementation der GPU-Treiber (Achtung: wenn bestimmte GL Versionen/Extensions benötigt werden, muss ggf. eine spezifisches glad Kompilat verwendet werden)
https://github.com/Dav1dde/glad
https://glad.dav1d.de/

FreeType - C Bibliothek zum laden von vector/bitmap Font Formaten https://www.freetype.org/

SVN

Die Repositories findet Ihr unter folgendem Pfad: https://stud.fh-wedel.de/repos/uebungen/sesp/sesp_xx