fix(render): 切片偶尔停顿根因修复 — 体绘制改全程统一全质量 + 撤销诊断埋点
- 实测(render_verify + 帧耗时埋点)定位: 体绘制走 GPU(RTX3060), 每帧~7ms(669帧全<21ms), 渲染根本不慢; 前判"CPU回退"错误。"偶尔停顿"是帧间间隙, 非慢帧。 - 根因: ①诊断埋点每帧 flush 磁盘(偶发延迟) ②vtkSmartVolumeMapper AutoAdjust 的"停手补高清"突跳。 - 修: 撤销帧耗时埋点(及无效的 DesiredUpdateRate 改动); VoxelActor 关交互降采样(Auto/Interactive AdjustSampleDistances=0)→全程统一全质量(GPU 足够), 消除停手补帧的突跳。 - 全 40 测试绿; app 构建干净。
This commit is contained in:
parent
6c60f5a83d
commit
a0fcc4cc62
|
|
@ -406,10 +406,6 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
}
|
||||
vtkRenderWindowInteractor* interactor = renderWindowPtr->GetInteractor();
|
||||
if (*showSlice && interactor) {
|
||||
// 交互时目标帧率↑→体绘制自动降采样(AutoAdjustSampleDistances),拖切片不卡;
|
||||
// 松手后按 StillUpdateRate 恢复全质量。
|
||||
interactor->SetDesiredUpdateRate(20.0);
|
||||
interactor->SetStillUpdateRate(0.001);
|
||||
const std::vector<double> stops = vcs.stopValues();
|
||||
const double vmn = stops.size() >= 2 ? stops.front() : 0.0;
|
||||
const double vmx = stops.size() >= 2 ? stops.back() : 1.0;
|
||||
|
|
|
|||
|
|
@ -74,9 +74,9 @@ vtkSmartPointer<vtkVolume> buildVoxel(const geopro::core::ScalarVolume& vol,
|
|||
// SmartVolumeMapper:有 GPU 走 GPU ray cast,否则自动回退 CPU,避免无 GPU 时卡死/失败。
|
||||
vtkNew<vtkSmartVolumeMapper> mapper;
|
||||
mapper->SetInputData(img);
|
||||
// 交互时按 DesiredUpdateRate 自动降采样(与切片共渲时拖动更流畅);静止恢复全质量。
|
||||
mapper->SetAutoAdjustSampleDistances(1);
|
||||
mapper->SetInteractiveAdjustSampleDistances(1);
|
||||
// 全程统一全质量(GPU 足够快, 实测 ~7ms/帧):关掉交互降采样, 避免"停手补高清"那一帧突跳停顿。
|
||||
mapper->SetAutoAdjustSampleDistances(0);
|
||||
mapper->SetInteractiveAdjustSampleDistances(0);
|
||||
|
||||
vtkNew<vtkVolumeProperty> prop;
|
||||
prop->SetColor(color);
|
||||
|
|
|
|||
Loading…
Reference in New Issue