From 5f538f4ee85f2f6c42243017aedfe1d84737aff0 Mon Sep 17 00:00:00 2001 From: swinston Date: Thu, 20 Aug 2026 10:41:56 -0700 Subject: [PATCH] Make lazily-cached projection matrix members mutable --- .../Engine_Architecture/03_component_systems.adoc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/en/Building_a_Simple_Engine/Engine_Architecture/03_component_systems.adoc b/en/Building_a_Simple_Engine/Engine_Architecture/03_component_systems.adoc index c68b880ef..03473a3e9 100644 --- a/en/Building_a_Simple_Engine/Engine_Architecture/03_component_systems.adoc +++ b/en/Building_a_Simple_Engine/Engine_Architecture/03_component_systems.adoc @@ -226,8 +226,11 @@ private: float farPlane = 1000.0f; glm::mat4 viewMatrix = glm::mat4(1.0f); - glm::mat4 projectionMatrix = glm::mat4(1.0f); - bool projectionDirty = true; + // mutable: GetProjectionMatrix() is logically const (it just returns a + // matrix) even though it lazily recomputes and caches that matrix on + // first access after the projection parameters change. + mutable glm::mat4 projectionMatrix = glm::mat4(1.0f); + mutable bool projectionDirty = true; public: void SetPerspective(float fov, float aspect, float near, float far) {