修改SceneRenderer 的存储的世界矩阵存储方式

This commit is contained in:
2026-10-04 20:10:49 +08:00
parent 2268fa5f76
commit 3e85285e41
2 changed files with 21 additions and 9 deletions
@@ -131,9 +131,11 @@ namespace Engine {
glm::mat4 m_LastView{1.0f}; // 上一帧视图(velocity)
glm::mat4 m_LastProjNoJitter{1.0f}; // 上一帧未抖动投影(velocity)
// 实体的上一帧世界矩阵(key = entt 实体 integral)。
// 每帧重建 m_CurWorlds 后与 m_PrevWorlds swap——自动清理销毁实体
std::unordered_map<u32, glm::mat4> m_PrevWorlds;
std::unordered_map<u32, glm::mat4> m_CurWorlds;
// 用 sorted vector + binary_search 替代 unordered_map:
// unordered_map 在每帧大量 emplace 时 rehash 抖动明显,
// vector 连续内存 + 单次 sort 对 cache 友好且无 rehash
std::vector<std::pair<u32, glm::mat4>> m_PrevWorlds;
std::vector<std::pair<u32, glm::mat4>> m_CurWorlds;
// ---- 骨骼动画 scratch(帧首重建/容量复用)----
// entKey → palette 区段基址(第 2.5 节预采样填,收集段查)