缓存 2D 节点

要提高应用程序的性能,您可以缓存在某个时间点后变为静态或很少更改的2D节点的渲染。使用此方法可以加速复杂节点的渲染。

当为 2D 节点启用缓存时,该节点会为自己生成一个缓存图像,然后对其进行渲染,并对随后的帧使用所生成的这个缓存图像,而不是再次对其进行渲染。

您可以:

要缓存3D内容的渲染,请在包含您要缓存的3D内容的 Scene 节点的父 Viewport 2D 节点中配置缓存。

因为缓存会消耗 GPU 内存,所以默认情况下是禁用的。当节点的缓存被禁用时,Kanzi 会正常渲染该节点,并释放与渲染缓存相关的所有资源。

使用自动渲染缓存更新

使用自动渲染缓存更新功能来处理渲染开销大的复杂节点,并且这些节点的渲染不会经常改变。您可以设置 Kanzi 来缓存一个2D节点,并在该节点或其子节点的渲染发生变化且缓存图像不再正确表示该节点时自动更新渲染缓存。例如,当节点的大小或形状发生变化时。

小技巧

当您想为渲染不经常变化但其子节点渲染经常变化的复杂节点启用自动缓存更新时,请将这些子节点移动到一个单独的节点。

要将 Kanzi 设置为自动更新2D节点的渲染缓存,请在 Node Tree 中选择该节点,在 Properties 中添加 Render Target > Caching Mode 属性,并将其设置为 Automatic。

通过这种方式,您将 Kanzi 设置为在下次渲染节点时缓存该节点,并且不会检测到节点或其后代的渲染变化。

当您启用自动渲染缓存更新时,Kanzi 会在渲染期间持续检查节点或其子节点的更改:

  • 如果节点是静态的,Kanzi 会重新创建缓存图像或使用现有且仍然有效的缓存图像渲染节点。

  • 如果节点的渲染发生变化,Kanzi 将使缓存图像失效,并在不缓存的情况下正常渲染节点。

../../_images/caching-mode-automatic.png

手动控制渲染缓存更新

当您确切知道何时需要更新2D节点的渲染缓存时,您可以手动控制缓存更新。您可以为节点启用缓存,并设置 Kanzi 以在节点或其任何后代更改时更新渲染缓存。例如,使用 Set Property 操作或绑定来使您希望 Kanzi 更新的渲染缓存失效。

要手动控制渲染缓存更新:

  1. 在 Node Tree 中选择您要缓存的节点,在 Properties 中添加 Render Target > Caching Mode 属性,并将其设置为 Enabled。

    通过这种方式,您可以设置 Kanzi 以在下次渲染该节点时缓存该节点,并在您使缓存失效之前,一直从缓存中渲染该节点。

    如果 Kanzi 已经缓存了该节点,它不会自动更新缓存。

    ../../_images/caching-mode-enabled.png
  2. 要设置 Kanzi 以更新渲染缓存,请通过禁用您要更新其渲染缓存的节点中的 Cache Valid 属性来使渲染缓存失效。

    将缓存失效设置为当您知道节点或其任何后代发生变化时发生,并且您希望 Kanzi 在下次渲染该节点时更新渲染缓存。

    例如:在将节点设置为更改的触发器中,创建一个 Set Property 操作来禁用 Cache Valid 属性。

    备注

    使渲染缓存无效不会释放节点分配的任何资源。

    要释放与渲染缓存关联的资源,请将 Caching Mode 属性设置为 Disabled。

另请参阅

渲染最佳实践

优化布局的渲染

配置节点以实现高效渲染

使用 Sorting Filter 防止过度绘制。

渲染部分透明节点

使用渲染目标纹理

排除应用程序性能问题