geopro/.superpowers/sdd/task-12d-fix-report.md

2.9 KiB
Raw Permalink Blame History

Task 12d-fix 报告:修 gpr_poc view 空窗 + 控制台乱码

状态

DONE。两 bug 均修复构建通过Community vcvars64 直驱 ninjaexit 0离屏自检通过。

提交短哈希

1495d0efeat/vtk-3d-view 分支)

改动文件

tools/gpr_poc/main.cpp+70 -1

Bug 1概览空窗LOD 策略错)

  • 根因:view 每帧 viewRefreshBlocks 无脑走分块路径,相机概览时 pickLevel 选 level1696 块)被 budget=64 砍到 64/6969% 稀疏)→ 看着空。
  • 修复:viewRefreshBlocks 按相机选中 level 分流(同 12c renderLOD 已验):
    • 相机选中 level0最近、要全分辨率X=44476 无法成单纹理)→ 分块 + budget核外 LRU原路径不变
    • 相机选中 level≥1(概览/中远)→ wholeVolumeLevelFor 从 picked 起向粗找第一个“整卷各轴 ≤16384”的层本数据 level0/1 的 X=44476/22238>16384 → 升 level2buildLevelImage 整卷重组单张 image单块喂 mapper忽略 budget粗层本就小。整卷 image 按 level 缓存,仅 level 变化时重组。
  • 效果:概览不再是 64/696 稀疏块,而是 1 个整卷块渲染完整体。

Bug 2控制台中文乱码GBK

  • 修复:main() 入口 #ifdef _WIN32SetConsoleOutputCP(CP_UTF8);(含 <windows.h>)。保留全文件已有中文输出,全子命令受益。

离屏自检结果view --smoketmp\store_lod_001

修复前:

[view] 预热: level=1 视野块=696/696 驻留=64 渲染块=64        ← 64/696 稀疏

修复后:

[view] 预热: level=1 视野块=696/696 驻留=64 渲染块=1         ← 整卷单块(升 level2)
=== view --smoke 离屏冒烟 ===
近观 level=1 → 拉远 level=3 → 再拉近 level=1
LOD 随缩放切换  : 是 ✔  (blocksFar=1)
纹理维度错误    : 否
渲出非空像素    : 是 (近=1024000 远拉近=1024000)
smoke 结果      : OK ✔ 不崩
  • 概览渲染块 64 → 1整卷:核心修复,整卷完整渲染而非 9% 稀疏。
  • 渲出非空像素1024000无纹理错、不崩。注该视角整卷与原稀疏块均填满帧像素计数饱和故区分性证据是“渲染块 64→1整卷”。
  • 编码正常=== view --smoke 离屏冒烟 === 等中文在 UTF-8 控制台正确显示,无 GBK 乱码。

提交干净性确认

  • git diff --cached --stat 提交前确认 index 仅含 tools/gpr_poc/main.cpp,无 chart/scatter/quill/rangeslider/Dialog/FormK 等并行会话文件。
  • git add tools/gpr_poc/main.cpp(及本报告),绝无 git add -A

给用户的重跑命令

真窗口交互(开窗即见完整粗层体,滚轮拉近变清晰/分块):

build\release\tools\gpr_poc\gpr_poc.exe view tmp\store_lod_001 --exagg 8 --opacity 0.6

离屏自检:

build\release\tools\gpr_poc\gpr_poc.exe view tmp\store_lod_001 --exagg 8 --opacity 0.6 --smoke