diff options
Diffstat (limited to 'frontend/shared_cpp/OrthographicRenderer.h')
| -rw-r--r-- | frontend/shared_cpp/OrthographicRenderer.h | 38 | 
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 | 
