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

54 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Task 12d-fix 报告:修 gpr_poc view 空窗 + 控制台乱码
## 状态
DONE。两 bug 均修复构建通过Community vcvars64 直驱 ninjaexit 0离屏自检通过。
## 提交短哈希
`1495d0e`feat/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 → 升 level2`buildLevelImage` 整卷重组单张 image单块喂 mapper忽略 budget粗层本就小。整卷 image 按 level 缓存,仅 level 变化时重组。
- 效果:概览不再是 64/696 稀疏块,而是 **1 个整卷块**渲染完整体。
### Bug 2控制台中文乱码GBK
- 修复:`main()` 入口 `#ifdef _WIN32``SetConsoleOutputCP(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
```