feat/vtk-3d-view #7
|
|
@ -4140,10 +4140,18 @@ void viewAllRefreshFrustum(ViewAllState* st) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 交互进行中:只重算视锥可见性 + 提交目标(非阻塞),主线程立即继续响应输入。
|
// 交互进行中:只做视锥裁剪(便宜,仅切可见性),绝不提交引擎目标/重建纹理。
|
||||||
|
// 拖动中频繁提交=20 条体反复重建+上传 GPU→GPU 100% thrash→卡死。拖动只渲已有
|
||||||
|
// 纹理(mapper 降采样保流畅);重建只在松手(EndInteraction)触发一次。
|
||||||
void viewAllOnInteracting(vtkObject*, unsigned long, void* clientData, void*) {
|
void viewAllOnInteracting(vtkObject*, unsigned long, void* clientData, void*) {
|
||||||
auto* st = static_cast<ViewAllState*>(clientData);
|
auto* st = static_cast<ViewAllState*>(clientData);
|
||||||
viewAllRefreshFrustum(st);
|
double planes[24];
|
||||||
|
st->cam->GetFrustumPlanes(st->aspect, planes);
|
||||||
|
for (PlacedSource& ps : *st->lines) {
|
||||||
|
const bool outside = aabbOutsideFrustum(ps.worldBounds, planes);
|
||||||
|
ps.culled = outside;
|
||||||
|
ps.volume->SetVisibility(outside ? 0 : 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定时器:非阻塞拉取各可见线后台已就绪的新高清纹理换上 → 有新图才重渲。
|
// 定时器:非阻塞拉取各可见线后台已就绪的新高清纹理换上 → 有新图才重渲。
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue