54 lines
2.9 KiB
Markdown
54 lines
2.9 KiB
Markdown
# Task 12d-fix 报告:修 gpr_poc view 空窗 + 控制台乱码
|
||
|
||
## 状态
|
||
DONE。两 bug 均修复,构建通过(Community vcvars64 直驱 ninja,exit 0),离屏自检通过。
|
||
|
||
## 提交短哈希
|
||
`1495d0e`(feat/vtk-3d-view 分支)
|
||
|
||
## 改动文件
|
||
仅 `tools/gpr_poc/main.cpp`(+70 -1)。
|
||
|
||
### Bug 1:概览空窗(LOD 策略错)
|
||
- 根因:`view` 每帧 `viewRefreshBlocks` 无脑走分块路径,相机概览时 `pickLevel` 选 level1(696 块)被 budget=64 砍到 64/696(9% 稀疏)→ 看着空。
|
||
- 修复:`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 --smoke,tmp\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
|
||
```
|