光栅(Raster)&性能优化

光栅(Raster)&性能优化

光栅化是把绘制指令转换成对应的像素数据,合成是把各图层栅格化后的数据进行相关的叠加和特性处理。这个流程称为 Graphics Pipeline。

在这里插入图片描述

Flutter 采用的是异步分快光栅化

光栅化和合成在一个线程,或者通过线程同步等方式来保证光栅化和合成的的顺序。

  • 直接光栅化:直接执行可见图层的 DisplayList 中可见区域的绘制指令进行光栅化,在目标 Surface 的像素缓冲区上生成像素的颜色值。
  • 间接光栅化:为指定图层分配额外的像素缓冲区(例如 Android 提供 View.setLayerType 允许应用为指定 View 提供像素缓冲区,Flutter 提供了 Relayout Boundary 机制来为特定图层分配额外缓冲区),该图层光栅化的过程中会先写入自身的像素缓冲区,渲染引擎再将这些图层的像素缓冲区通过合成输出到目标 Surface 的像素缓冲区。

异步分块光栅化: 图层会按照一定的规则粉尘同样大小的图块,光栅化以图块为单位进行,每个光栅化任务执行图块区域内的指令,将执行结果写入分块的像素缓冲区,光栅化和合成不在一个线程内执行,并且不是同步的。如果合成过程中,某个分块没有完成光栅化,那么它会保留空白或者绘制一个棋盘格图形。

不同策略

  • Android 和 Flutter 采用同步光栅化策略,以直接光栅化为主,光栅化和合成同步执行,在合成的过程中完成光栅化。
  • 而 Chromium 采用异步分块光栅化测量,图层会进行分块,光栅化和合成异步执行。

光栅线程优化性能建议

使用性能模式启动

flutter run --profile

启动之后会出现一个 url 地址,使用浏览器打开,比如本地就是 :http://127.0.0.1:9101?uri=http://127.0.0.1:53754/pdBGQwzgnug=/

λ flutter run --profile
Launching lib\main.dart on MI PAD 4 PLUS in profile mode...
Running Gradle task 'assembleProfile'...                           25.7s
√  Built build\app\outputs\flutter-apk\app-profile.apk (205.2MB).
I/FlutterBluePlugin(18772): setup
W/FlutterActivityAndFragmentDelegate(18772): A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.

Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on MI PAD 4 PLUS is available at: http://127.0.0.1:53754/pdBGQwzgnug=/
The Flutter DevTools debugger and profiler on MI PAD 4 PLUS is available at: http://127.0.0.1:9101?uri=http://127.0.0.1:53754/pdBGQwzgnug=/

性能优化最佳实践

best-practices

阅读资料

如何避免Jank
Flutter 渲染机制
⭐⭐Raster thread performance optimization tips
How Flutter renders Widgets
Flutter’s Rendering Pipeline
B 站视频:深入了解 Flutter 的高性能图形渲染
flutter/engine 源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Raster Calculator(栅格计算器)是ArcGIS软件中的一个工具,它可以用来对栅格数据进行各种数学和逻辑运算。使用Raster Calculator,你可以对一个或多个栅格图层进行加、减、乘、除等运算,也可以进行逻辑运算如逻辑与、逻辑或、逻辑非等。 以下是使用Raster Calculator的一般步骤: 1. 在ArcGIS软件中,打开你的工作项目,并确保你已经加载了需要进行计算的栅格图层。 2. 在ArcGIS主菜单中,选择 "Spatial Analyst"(空间分析)工具箱。如果没有显示该工具箱,你可能需要先启用Spatial Analyst扩展。 3. 在Spatial Analyst工具箱中,展开 "Map Algebra"(地图代数)子菜单,找到并打开 "Raster Calculator"(栅格计算器)工具。 4. 在Raster Calculator对话框中,输入适当的表达式。表达式应基于栅格图层的名称和运算符进行构建。例如,"Raster1 + Raster2" 表示将Raster1和Raster2两个栅格图层进行相加。 5. 可以通过单击 "Add Raster" 按钮来添加更多的栅格图层到表达式中,并继续构建你的计算公式。 6. 确认表达式无误后,选择输出栅格图层的存储位置和名称。 7. 点击 "OK" 开始执行栅格计算器操作。 请注意,表达式中的栅格图层应具有相同的空间参考和像元大小,否则可能需要进行预处理以确保数据一致性。 使用Raster Calculator可以进行更复杂的计算,包括条件语句、逻辑运算和函数调用等。你可以参考ArcGIS的帮助文档或在线资源,以了解更多关于Raster Calculator的详细使用方法和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值