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