WPF VisualTreeHelper.HitTest 使用多线程

WPF VisualTreeHelper.HitTest using multiple threads

在我的应用程序中,在 Viewport3D 对象之上有一个透明的 InkCanvasViewport3D 显示了一个大的 3D 网格。用户将在 InkCanvas 上绘制草图,以便 select Viewport3D 正在渲染的 3D 模型的一部分。允许用户在 InkCanvas.
上画圆 当用户绘制草图时,我遍历所有落在绘制圆内的点,并使用 VisualTreeHelper.HitTest 函数执行光线投射并确定 Viewport3D 网格的哪些顶点与草图重合。

问题是 VisualTreeHelper.HitTest 非常慢。如果我使用 Parallel.For,我仍然无法在 Viewport3D 上并行执行多个光线投射(因为 Viewport3D 对象的拥有线程是 UI 线程而且我必须使用 Viewport3DDispatcher.Invoke 函数,这将首先破坏 Parallel.For 的目的。)

有没有办法使用多线程来加快速度?更好的是,是否有替代解决方案?

经过多方查找,我想我想要的东西在WPF框架中是不可能的。为此,我切换到 OpenTK 并自己实现了光线投射。
现在我在 OpenTK 中有一个 WPF 模拟,性能要好得多。如果有人感兴趣,代码是available here