diff --git a/Engine/src/Renderer/SceneRenderer.cpp b/Engine/src/Renderer/SceneRenderer.cpp index 8422b4e..1003394 100644 --- a/Engine/src/Renderer/SceneRenderer.cpp +++ b/Engine/src/Renderer/SceneRenderer.cpp @@ -303,8 +303,12 @@ namespace Engine instanceTruncated = true; return; } + // lookup 值 = batches 索引(此前误存 worlds 索引: + // 单实体时两序号恰好恒等,多实体共享 mesh 后分叉 + // → batches[worldsIdx] 越界)。batch.first(GPU + // firstInstance 基址)才是 worlds 索引,语义别混 const auto [it, inserted] = s.lookup.emplace( - mesh.get(), static_cast(s.worlds.size())); + mesh.get(), static_cast(s.result.batches.size())); if (inserted) { s.result.batches.push_back({mesh.get(), static_cast(s.worlds.size()), 0});