From 4b560f03201f1c2d7c632126cd1e512ed4027072 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 26 Apr 2023 01:16:06 +0100 Subject: Add Mesh helper for drawing instances Assumes the supplied VAO was created and configured for the mesh it's passed back to. --- gfx/models/mesh.cpp | 10 ++++++++++ gfx/models/mesh.h | 1 + 2 files changed, 11 insertions(+) diff --git a/gfx/models/mesh.cpp b/gfx/models/mesh.cpp index 55759cb..3faf252 100644 --- a/gfx/models/mesh.cpp +++ b/gfx/models/mesh.cpp @@ -42,3 +42,13 @@ Mesh::Draw() const glBindVertexArray(0); } + +void +Mesh::DrawInstanced(GLuint vao, GLsizei count) const +{ + glBindVertexArray(vao); + + glDrawElementsInstanced(mode, m_numIndices, GL_UNSIGNED_INT, nullptr, count); + + glBindVertexArray(0); +} diff --git a/gfx/models/mesh.h b/gfx/models/mesh.h index 472b7ed..a2205a1 100644 --- a/gfx/models/mesh.h +++ b/gfx/models/mesh.h @@ -14,6 +14,7 @@ public: Mesh(const std::span vertices, const std::span indices, GLenum = GL_TRIANGLES); void Draw() const; + void DrawInstanced(GLuint vao, GLsizei count) const; VertexArrayObject & configureVAO(VertexArrayObject &&) const; GLsizei count() const; GLenum type() const; -- cgit v1.2.3