Eingewöhnung und Verwirrung mit OpenGL
Disclaimer: Alle Informationen sind aus dem Buch/der Website https://learnopengl.com/ entnommen und dort genauer, exakter und mit detaillierter Beschreibung erläutert. Mein Eintrag ist nur eine laihenhafte Erstanwendung des Buches und wohl mit mehr Fragen als Antworten beschrieben (und wohlmöglichen Fehlern).
Heute lerne ich über die Graphics Pipeline in OpenGL. Da eine Bildschirmausgabe natürlich nur in 2D stattfindet muss eine Transformation von 3D in 2D Pixel durchgeführt werden. Diesen Prozess (und weiteres) übernimmt die graphics pipeline, wie sie so schön genannt wird.
Die Pipeline übernimmt dabei zwei große Teile. Erstens, die Koordinaten-Transformation von 2D in 3D und zweitens die Einfärbung der 2D-Pixel.
Shader sind dabei tausende kleiner Programme die parallel von Prozessorkernen auf der Grafikkarte ausgeführt werden und einzelne Schritte der Pipeline durchführen. Einige dieser Shader können dabei vom Programmierer eigenständig modifiziert und konfiguriert werden. Die Shader werden mit der OpenGL Shading Language (GLSL) geschrieben.
Wir werden anscheinend größtenteils nur mit dem Vertex- und Fragment-Shader arbeiten.
Wir geben OpenGL eine Reihe von Koordinaten und müssen dem System mitteilen was damit geschehen soll. Joey de Vries spricht in seinem Buch von dabei sogenannten ‘Hints’ die wir übermitteln. Das Wort Hints ist jetzt schon öfter aufgetaucht, wobei mir die übergreifende Bedeutung noch nicht ganz klar geworden ist.
Primitives sind die Mitteilung an OpenGL wie wir unsere Vertex Daten (also die einzelnen Vertices) gerendert haben möchten. Also ob wir eine Zusammensetzung aus Punkten, Dreiecken oder nur eine gerade Linie haben wollen.
Das wären dann zum Beispiel: GL_POINTS, GL_TRIANGLES and GL_LINE_STRIP.
Es wird dann ein Vertex Buffer Object (VBO) genutzt, das eine Reihe von Vertices auf der Grafikkarte speichern kann. Ein Objekt ist in OpenGL eine Sammlung von “Optionen” (wohl eher Funktionen gemeint) die eine Teilmenge des OpenGL-Zustands repräsentiert. So richtig schlau werde ich aus der Definition noch nicht.
Auf jeden Fall ist glGenBuffers das erste OpenGL-Objekt das wir in dem Tutorial nutzen. Weiterhin ist mir auch noch nicht so richtig klar wofür Buffer generell genutzt werden aber das sollte sich wohl bald klären. Zum jetzigen Zeitpunkt nutzen wir den Buffer um unsere Daten auf der Grafikkarte zu speichern, um diese dann mit unseren Shadern verwenden zu können.
No Comment