2

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

问题是VisualTreeHelper.HitTest速度非常慢。如果我使用 aParallel.For我仍然无法在 Viewport3D 上并行执行多个光线投射(由于Viewport3D对象的拥有线程是 UI 线程,我必须使用Viewport3D'Dispatcher.Invoke函数这将击败一开始的目的Parallel.For。)

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

4

1 回答 1

1

经过大量搜索,我认为我想要的在 WPF 框架中是不可能的。为此,我切换到 OpenTK 并自己实现了光线投射。
现在我在 OpenTK 中有一个 WPF-mimick,性能要好得多。如果有人感兴趣,可以在这里找到代码。

于 2015-05-23T14:35:30.323 回答