Wir haben gesehen, wie man Vertex- und Index-Daten in GPU-Buffer schreibt und anschließend Streams an den Vertex-Shader definiert. Jetzt können wir die Rendering-Pipeline in Gang setzen. Das geht so:

Den Großteil (Clipping, Rasterisieren, …) erledigt OpenGL von selbst, allerdings können wir uns mit Shadern in bestimmten Abschnitten in bestimmte Phasen einklinken:

Beispiel

// vbo1 als ersten Shader-Input definieren
glBindBuffer(GL_ARRAY_BUFFER, vbo1);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
 
// vbo2 als zweiten Shader-Input definieren
glBindBuffer(GL_ARRAY_BUFFER, vbo2);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, 0);
 
// ibo als Indizies nochmal binden, sofern nicht schon gemacht
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
 
// Draw Call!
glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0);
 
// Bindungen lösen
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);

Referenz

Showing 2 of 2 entries