diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-03-11 20:45:05 +0000 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-03-11 20:45:05 +0000 |
| commit | c403a71564def731f4d3b80d6ff63f08aa3c7ea3 (patch) | |
| tree | e4302316295639da9a2d10181c498986c8806754 /game/scenary/illuminator.h | |
| parent | Add missing typename exporting base::value_type from InstanceVertices (diff) | |
| download | ilt-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.h | 5 |
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; |
