Einordnung der Inhalte (OpenGL) – Teil 1
Da das erste richtige Kapitel doch sehr umfangreich ist, werde ich hier nochmal ein paar Begriffe auflisten die bei der Bearbeitung der ersten Übung helfen.
Mithilfe des öffentlichen Source-Codes konnte ich das erste Dreieck und Rechteck problemslos ausführen. Die Inhalte sind jedoch noch recht unklar da viele neue Begriffe eingeführt wurden.
Zum einen gibt es den Vertex input, Vertex shader, Compiling a shader, Fragment shader, Linking Vertex Attributes und Element Buffer Objects als Themenbereiche.
Im Vertex input wird die erste geometrische Form als Koordinate gespeichert, dafür wird ein vertex buffer objects (VBO) verwendet. Ein wichtiger Begriff ist anscheined der GL_ARRAY_BUFFER , denn Buffer (wie im vorherigen Eintrag erwähnt, der glGenBuffers) können wohl auf Buffer-Zieltypen gebunden werden?! Und der GL_ARRAY_BUFFER ist anscheinend eines dieser Zieltypen speziell für Vertex Buffer.
Okay an dieser Stelle nochmal der Hinweis, dass meine Übersetzungen absolut unpräzise und falsch sein können und daher auch die Schlussfolgerungen. Aber ich versuche hier mal meinen Lernprozess festzuhalten.
Also in anderen Worten wird ein Datenobjekt erzeugt (das Vertex Buffer Object) und an den GL_ARRAY_BUFFER gebunden. Die Funktion glBufferData wird dafür genutzt die verschiedenen Parameter anzugeben und die Daten miteinander zu verknüpfen.
Dann kommen wird zur Vertex shader Definition. Hier werden die Attribute der Koordinaten-Punkte definiert. In diesem Tutorial leiten wir die bereits aufbereiteten Daten einfach nur direkt weiter an den Output mithilfe von gl_Position. Im Normalfall würde hier eine Anpassung der Daten stattfinden, um die Koordinaten in die visuellen Sichtbereich von OpenGL zu bringen.
Als nächstes folgt Compiling a shader. Die Definition des Vertex Shader wird in einem String gespeichert. Der Vertex Shader wird erst jetzt erzeugt mittels: glCreateShader(GL_VERTEX_SHADER). Anschließend wird die Definition des Shaders mit erzeugten Shader mitgeteilgt mit der Funktion glShaderSource.
Im Fragment shader werden die Farben für den Output der Pixel kalkuliert. Dies geschieht mit den üblichen vier RGBA-Werten. Dann wird die Definition implementiert. Der Shader wird genauso wie der Vertex shader erzeugt nur dieses mal wird der Shader-Type GL_FRAGMENT_SHADER verwendet.
Beide Shader werden als nächstes an ein Shader program übergeben.
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).
No Comment