summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-03-11 01:36:17 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-03-11 01:36:17 +0000
commitc6cff2f1e823327129ed7d044cec6c05fa7525a1 (patch)
tree87025e984f4d7fba2338bb585190b2107cc8573b
parentReplace hacky m4 shader preprocessing with proper glslang version (diff)
downloadilt-c6cff2f1e823327129ed7d044cec6c05fa7525a1.tar.bz2
ilt-c6cff2f1e823327129ed7d044cec6c05fa7525a1.tar.xz
ilt-c6cff2f1e823327129ed7d044cec6c05fa7525a1.zip
Split addAttribsFor away from requiring a buffer to bind
-rw-r--r--game/terrain.cpp4
-rw-r--r--game/water.cpp4
-rw-r--r--gfx/gl/glVertexArray.h10
-rw-r--r--gfx/models/mesh.h3
-rw-r--r--gfx/models/vertex.cpp4
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<Terrain::Vertex>(const GLuint divisor, const glBuffer & buffer)
+Impl::VertexArrayConfigurator::addAttribsFor<Terrain::Vertex>(const GLuint divisor)
{
- return addAttribs<Terrain::Vertex, &Terrain::Vertex::pos, &Terrain::Vertex::normal>(divisor, buffer);
+ return addAttribs<Terrain::Vertex, &Terrain::Vertex::pos, &Terrain::Vertex::normal>(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<Water::Vertex>(const GLuint divisor, const glBuffer & buffer)
+Impl::VertexArrayConfigurator::addAttribsFor<Water::Vertex>(const GLuint divisor)
{
- return addAttribs<Water::Vertex, &Water::Vertex::pos>(divisor, buffer);
+ return addAttribs<Water::Vertex, &Water::Vertex::pos>(divisor);
}
Water::Water(std::shared_ptr<GeoData> tm) : geoData {std::move(tm)}, water {std::make_shared<Texture>("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<typename VertexT> VertexArrayConfigurator & addAttribsFor(GLuint divisor, const glBuffer & buffer);
+ template<typename VertexT> VertexArrayConfigurator & addAttribsFor(GLuint divisor);
+
+ template<typename VertexT>
+ VertexArrayConfigurator &
+ addAttribsFor(GLuint divisor, const glBuffer & buffer)
+ {
+ glVertexArrayVertexBuffer(name, binding, buffer, 0, sizeof(VertexT));
+ return addAttribsFor<VertexT>(divisor);
+ }
template<typename VertexT, MP... Attribs>
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 <gfx/gl/glVertexArray.h>
#include <glad/gl.h>
#include <ranges>
#include <span>
#include <stdTypeDefs.h>
-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<Vertex>(const GLuint divisor, const glBuffer & buffer)
+Impl::VertexArrayConfigurator::addAttribsFor<Vertex>(const GLuint divisor)
{
return addAttribs<Vertex, &Vertex::pos, &Vertex::texCoord, &Vertex::normal, &Vertex::colour, &Vertex::material>(
- divisor, buffer);
+ divisor);
}