perf(render): 拖切片不卡 — 交互时体绘制自动降采样
- 反馈: 开体素时拖切片卡(每帧全质量重渲 GPU 体绘制跟不上拖动帧率)。 - 修: 切片交互时 interactor DesiredUpdateRate=20fps + VoxelActor mapper Auto/InteractiveAdjustSampleDistances → 拖动时体绘制自动降采样提帧率, 松手按 StillUpdateRate 恢复全质量。 - 全 40 测试绿; app 构建干净。
This commit is contained in:
parent
65283492fb
commit
6c60f5a83d
|
|
@ -406,6 +406,10 @@ 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,6 +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);
|
||||
|
||||
vtkNew<vtkVolumeProperty> prop;
|
||||
prop->SetColor(color);
|
||||
|
|
|
|||
Loading…
Reference in New Issue