我正在创建一个带有 Viewport3D 的 WPF 应用程序,并且在视口内我有带有文本的网格。每个网格的文本都不同。(这意味着我可以为常规网格的材质提供单一参考,但对于文本,我需要每次创建不同的材质。)我还冻结了所有常规网格,因为它们是静态的。
但是,我可以使用 SolidColorBrush 创建任意数量的网格,并且性能保持稳定。(我已经尝试了大约 700 - 800 个网格)
但是,如果我实现文本网格,性能会急剧下降。例如,当我有大约 200 个常规网格和 200 个文本网格时,性能非常糟糕。
我尝试了两种不同的方式来呈现文本;- 我尝试将文本渲染为 Viewport2DVisual3D。(但我认为这是一种糟糕的方式,因为这意味着在我之前的示例中,除了 Viewport3D 本身还有 200 个视口。) - 我尝试将文本渲染为 GeometryModel3D,因此创建与常规画笔相同。然而,材质由 VisualBrush 而不是 SolidColorBrush 组成。(这确实提高了相当多的性能,但仍然不完美)
有没有人有解决方案来进一步提高我渲染文本的性能,以便我可以渲染更多?
(我已经遵循以下站点上的大部分性能指南: https ://msdn.microsoft.com/en-us/library/bb613553%28v=vs.110%29.aspx )
@edit:我发现如果我使用视觉刷执行以下操作:
VisualBrush v = new VisualBrush(Text.createCubeStackText(text1));
RenderOptions.SetCachingHint(v, CachingHint.Cache);
viewport.Material = new DiffuseMaterial(v);
它确实大大提高了性能。我已经尝试过了,现在可以渲染 700 个常规网格和 300 个文本网格,而不会出现任何性能问题。使用 550 个文本网格和 550 个常规网格时,性能开始下降。
(不过,我仍然想要任何其他建议。)