summaryrefslogtreecommitdiff
path: root/frontend/shared_cpp/OrthographicRenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/shared_cpp/OrthographicRenderer.h')
-rw-r--r--frontend/shared_cpp/OrthographicRenderer.h38
1 files changed, 37 insertions, 1 deletions
diff --git a/frontend/shared_cpp/OrthographicRenderer.h b/frontend/shared_cpp/OrthographicRenderer.h
index e04b5ec..c72639e 100644
--- a/frontend/shared_cpp/OrthographicRenderer.h
+++ b/frontend/shared_cpp/OrthographicRenderer.h
@@ -25,7 +25,7 @@ struct OrthographicRenderer {
struct OrthographicVertex {
Vector2 position;
- Vector2 color;
+ Vector4 color;
};
template <uint32 N>
@@ -39,3 +39,39 @@ struct OrthographicShape {
void render(OrthographicRenderer* renderer);
void unload();
};
+
+template <uint32 N>
+void OrthographicShape<N>::load(OrthographicRenderer* renderer) {
+ useShader(renderer->shader);
+
+ glGenVertexArrays(1, &vao);
+ glBindVertexArray(vao);
+
+ glGenBuffers(1, &vbo);
+ glBindBuffer(GL_ARRAY_BUFFER, vbo);
+ glBufferData(GL_ARRAY_BUFFER, N * sizeof(OrthographicVertex), &vertices[0], GL_STATIC_DRAW);
+
+ glEnableVertexAttribArray(renderer->attributes.position);
+ glVertexAttribPointer(renderer->attributes.position, 2, GL_FLOAT, GL_FALSE, sizeof(OrthographicVertex), (GLvoid *)0);
+
+ glEnableVertexAttribArray(renderer->attributes.color);
+ glVertexAttribPointer(renderer->attributes.color, 4, GL_FLOAT, GL_FALSE, sizeof(OrthographicVertex), (GLvoid *)offsetof(OrthographicVertex, color));
+
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindVertexArray(0);
+}
+
+template <uint32 N>
+void OrthographicShape<N>::render(OrthographicRenderer* renderer) {
+ setShaderMat4(renderer->uniforms.model, model);
+
+ glBindVertexArray(vao);
+ glDrawArrays(GL_TRIANGLES, 0, 3);
+ glBindVertexArray(0);
+}
+
+template <uint32 N>
+void OrthographicShape<N>::unload() {
+ glDeleteVertexArrays(1, &vao);
+ glDeleteBuffers(1, &vbo);
+} \ No newline at end of file