summaryrefslogtreecommitdiff
path: root/game/scenary/illuminator.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-03-11 20:45:05 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-03-11 20:45:05 +0000
commitc403a71564def731f4d3b80d6ff63f08aa3c7ea3 (patch)
treee4302316295639da9a2d10181c498986c8806754 /game/scenary/illuminator.h
parentAdd missing typename exporting base::value_type from InstanceVertices (diff)
downloadilt-c403a71564def731f4d3b80d6ff63f08aa3c7ea3.tar.bz2
ilt-c403a71564def731f4d3b80d6ff63f08aa3c7ea3.tar.xz
ilt-c403a71564def731f4d3b80d6ff63f08aa3c7ea3.zip
Reuse vertex array objects for common structures with DSA
Slashes the number of VAOs required and the amount of setup required.
Diffstat (limited to 'game/scenary/illuminator.h')
-rw-r--r--game/scenary/illuminator.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/game/scenary/illuminator.h b/game/scenary/illuminator.h
index 200ba40..7b6e7ad 100644
--- a/game/scenary/illuminator.h
+++ b/game/scenary/illuminator.h
@@ -11,8 +11,8 @@ class Location;
class Illuminator : public Asset, public Renderable, public StdTypeDefs<Illuminator> {
Mesh::Ptr bodyMesh;
Texture::Ptr texture;
- glVertexArray instanceVAO;
- std::optional<glVertexArray> instancesSpotLightVAO, instancesPointLightVAO;
+ std::shared_ptr<glVertexArray> instanceVAO, instancesSpotLightVAO, instancesPointLightVAO;
+ static std::weak_ptr<glVertexArray> commonInstanceVAO, commonInstancesSpotLightVAO, commonInstancesPointLightVAO;
public:
[[nodiscard]] std::any createAt(const Location &) const override;
@@ -42,7 +42,6 @@ public:
bool persist(Persistence::PersistenceStore & store) override;
};
-public:
using LocationVertex = std::pair<glm::mat3, GlobalPosition3D>;
mutable InstanceVertices<LocationVertex> instances;
mutable InstanceVertices<SpotLightVertex> instancesSpotLight;