From c6cff2f1e823327129ed7d044cec6c05fa7525a1 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 11 Mar 2026 01:36:17 +0000 Subject: Split addAttribsFor away from requiring a buffer to bind --- game/terrain.cpp | 4 ++-- game/water.cpp | 4 ++-- gfx/gl/glVertexArray.h | 10 +++++++++- gfx/models/mesh.h | 3 +-- gfx/models/vertex.cpp | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/game/terrain.cpp b/game/terrain.cpp index 44ed484..065842f 100644 --- a/game/terrain.cpp +++ b/game/terrain.cpp @@ -18,9 +18,9 @@ static constexpr GlobalDistance TILE_SIZE = 1024 * 1024; // ~1km, power of 2, fa template<> Impl::VertexArrayConfigurator & -Impl::VertexArrayConfigurator::addAttribsFor(const GLuint divisor, const glBuffer & buffer) +Impl::VertexArrayConfigurator::addAttribsFor(const GLuint divisor) { - return addAttribs(divisor, buffer); + return addAttribs(divisor); } bool diff --git a/game/water.cpp b/game/water.cpp index b5d7fc6..b8d51db 100644 --- a/game/water.cpp +++ b/game/water.cpp @@ -25,9 +25,9 @@ namespace glm { template<> Impl::VertexArrayConfigurator & -Impl::VertexArrayConfigurator::addAttribsFor(const GLuint divisor, const glBuffer & buffer) +Impl::VertexArrayConfigurator::addAttribsFor(const GLuint divisor) { - return addAttribs(divisor, buffer); + return addAttribs(divisor); } Water::Water(std::shared_ptr tm) : geoData {std::move(tm)}, water {std::make_shared("water.png")} diff --git a/gfx/gl/glVertexArray.h b/gfx/gl/glVertexArray.h index dbe930f..6630b70 100644 --- a/gfx/gl/glVertexArray.h +++ b/gfx/gl/glVertexArray.h @@ -40,7 +40,15 @@ namespace Impl { } // Customisation point - template VertexArrayConfigurator & addAttribsFor(GLuint divisor, const glBuffer & buffer); + template VertexArrayConfigurator & addAttribsFor(GLuint divisor); + + template + VertexArrayConfigurator & + addAttribsFor(GLuint divisor, const glBuffer & buffer) + { + glVertexArrayVertexBuffer(name, binding, buffer, 0, sizeof(VertexT)); + return addAttribsFor(divisor); + } template VertexArrayConfigurator & diff --git a/gfx/models/mesh.h b/gfx/models/mesh.h index f578625..d4dbd68 100644 --- a/gfx/models/mesh.h +++ b/gfx/models/mesh.h @@ -2,14 +2,13 @@ #include "config/types.h" #include "gfx/gl/glBuffer.h" +#include "gfx/models/vertex.h" #include #include #include #include #include -class Vertex; - class MeshBase { public: class Dimensions { diff --git a/gfx/models/vertex.cpp b/gfx/models/vertex.cpp index dc32f72..4b5ce54 100644 --- a/gfx/models/vertex.cpp +++ b/gfx/models/vertex.cpp @@ -3,8 +3,8 @@ template<> Impl::VertexArrayConfigurator & -Impl::VertexArrayConfigurator::addAttribsFor(const GLuint divisor, const glBuffer & buffer) +Impl::VertexArrayConfigurator::addAttribsFor(const GLuint divisor) { return addAttribs( - divisor, buffer); + divisor); } -- cgit v1.3