【问题标题】:How to perform Expensive Rendering如何执行昂贵的渲染
【发布时间】:2019-02-17 18:30:30
【问题描述】:

在许多情况下,渲染需要大量的计算能力。因此,由于 UI 需要等待渲染完成,因此可能会跳过帧。

我想知道如何实现渲染或绘制异步,即隔离。

compute 之类的函数不是一个选项,因为SendPort 仅适用于原始类型,并且绘画需要@9​​87654323@ 或Canvas

有些 Flutter 插件需要大量渲染。因此,我认为我可以在 video_player 插件中找到答案,但它使用了 Texture,即不会在 Dart 中呈现

我想知道这方面是否有任何成语或示例实现。

你想知道我是如何实现渲染的,你可以看看FlareActor。事实证明,他们处理绘画的方式和我一模一样。现在我想知道为什么我遇到瓶颈而 Flare 没有。有没有优化绘画的指南?

【问题讨论】:

  • 这是个好问题,我也想知道。现在我优化如下。 1)限制不要重叠需要重画的画布。 2)不要使用具有多帧图像的动画......我猜颤动无法优化预加载多帧和计算重叠画布,尤其是图像。我将阅读 FlareActor 的代码!谢谢你的好信息!
  • 好问题,但范围很广。你能定义什么是“昂贵的渲染”吗?因为优化肯定取决于你做什么。一个例子:stackoverflow.com/questions/46702376/…
  • 您可以将慢速渲染对象拆分为多个。并部分重绘它们

标签: dart flutter


【解决方案1】:

我通过将所有需要的像素写入BMP 文件格式然后使用Canvas.drawImage 来解决它,因为Flutter 画布无法处理许多Canvas 操作:https://stackoverflow.com/a/55855735/6509751

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2011-12-06
    • 1970-01-01
    • 2021-12-25
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多