# Task 9c 报告:POC-B 离屏 GPU 渲染基准 状态:**DONE**(闸门通过;真实基准实测完成;关键发现如实记录,无任何编造 fps) 执行机:Windows 11,MSVC(VS18 Community)+ Ninja,Release;GPU = NVIDIA RTX 3060 Laptop GPU,OpenGL 4.5.0 NVIDIA 555.97。 日期:2026-06-23。 --- ## 1. 交付物 - `tools/gpr_poc/main.cpp`:新增两个子命令 - `gpr_poc offscreen-smoke` —— 最小离屏渲染冒烟(闸门),打印 OK/FAIL + GL 能力。 - `gpr_poc renderB [--frames 120]` —— 离屏体绘制 + 切片扫描 fps 基准。 - `tools/gpr_poc/CMakeLists.txt`:补 VTK 组件(RenderingVolume / RenderingVolumeOpenGL2 / ImagingCore / InteractionStyle)。 - `docs/superpowers/plans/poc-results-B.md`:新增「§4 离屏 GPU 渲染基准」段(闸门 + 真实指标 + 关键发现 + 结论)。 - `build/_t9c_build.bat`:本任务用的 gpr_poc 单 target 构建脚本(vcvars64 直驱 cmake)。 ## 2. 闸门结果 —— OK `offscreen-smoke`:离屏 vtkRenderWindow(SetOffScreenRendering+SetShowWindow(false))→ cube actor → Render() → GetRGBACharPixelData 读回 65536 像素,非背景 28224。GL vendor=NVIDIA,硬件加速 True。**离屏 GL 可用**,继续真实基准。 ## 3. 真实 GPU 指标(line 001, cellXY=0.05, cellZ=0.05) - 体维度:**44476 × 29 × 162**;体素数 ≈2.09 亿;整卷字节 **398.54 MB**(int16)。 - **体绘制 fps:INVALID** —— 整卷 X 维 44476 超 `GL_MAX_3D_TEXTURE_SIZE=16384`, `vtkVolumeTexture` 报 `Invalid texture dimensions [44476,29,162]`,未真正绘出体数据。 raw_fps=295.6 是空纹理假帧率,已显式标 INVALID,**不作为体绘制性能上报**。 - **切片扫描 fps:54.6 fps**(120 帧沿 Z 扫整卷,vtkImageReslice 2D 切面 + 2D 纹理;不受 3D 纹理上限约束)。≥30fps 目标达成。 - 是否进显存:**否**(瓶颈是单轴纹理维度上限 16384,非显存字节;整卷 398 MB << RTX 3060 6GB 显存)。 - GPU 显存(NVX):**N/A**(随包 VTK 安装未带 GLEW 头,无法链 GL loader 直查;GL 扩展列表确认机器支持 NVX_gpu_memory_info)。 - 进程峰值内存:**≈509 MB**(加载整卷 398 MB + 渲染管线)。 - build 峰值内存:4830 MB(装配阶段 double survey 主导,与 §2 一致);无 OOM,cellXY=0.05 一次通过。 ## 4. concerns 1. **整卷朴素体绘制对长测线根本不可行**:X=44476 撞 OpenGL 单轴 3D 纹理上限 16384。 与显存容量无关,是硬限制。任何「整卷一次性 3D 纹理」方案对长测线都会撞墙。 这是 **Task 12(核外 / 分块 LOD / 体纹理分区 `vtkOpenGLGPUVolumeRayCastMapper::SetPartitions`)** 的硬性依据。本任务按约束未做核外,仅如实记录。 2. SmartVolumeMapper 报 GPURenderMode=2 但纹理上传失败——`GetLastUsedRenderMode()` 不能单独作为 「真的渲染出来了」的判据;renderB 已加 OutputWindow 捕获 + 维度超限双判据才下 INVALID 结论。 3. GPU 显存读数缺失(N/A):仅因 VTK 安装未带 GLEW 头;若需要可后续单独链 GL loader 调 NVX 枚举。