着色器简单入门

在flutter开发中,想做好一款App,性能优化是必不可少的,今天用到了,在此做一些简单的笔记。

1.什么是Shader

Shader是GPU使用的小程序,用于定义图形渲染方式,比如颜色、阴影等。

2.Shader Compilation Jank是什么

Shader编译通常在GPU上完成,但如果在应用运行期间实时编译,会导致短暂的卡顿(jank)。FLutter默认在运行时编译某些着色器,因此可能会有明显的性能问题,尤其是在复杂动画或图形效果中。

3.如何避免Shader编译卡顿

思路很简单,既然运行时编译卡顿,那么我们要做的就是在运行前进行预编译,这样运行时就不需要花时间去编译,要用的时候直接拿来用就好了。

  1. 真机运行如下命令,执行完App后,将原本卡顿的页面或动画等相关的业务执行一遍
    flutter run --profile --cache-sksl --purge-persistent-cache
  2. 在控制台中输入大写字母M,将触发的Shader记录保存到本地
    1
  3. 打包时附带此json文件,输入安卓端打包命令flutter build apk --target-platform android-arm64 --split-per-abi --obfuscate --split-debug-info=debug_info --bundle-sksl-path flutter_01.sksl.json
  4. iOS端最好分别生成此json文件,打包时带上另外生成的json文件即可

版权声明 版权所有 © 锦曜 。
本文为原创作品,未经授权,禁止转载、摘编或以任何形式使用。若需引用或转载,请联系本人获取授权,并注明原文链接及作者姓名。
使用许可:
非商业用途:个人可在非商业情况下分享文章链接,但不得修改或以其他形式复制内容。
商业用途:如需将文章用于商业用途,需事先获得书面许可。
免责说明:
本文章内容仅代表作者个人观点,不代表任何组织或机构立场。因文章内容产生的任何问题,作者不承担法律责任。
联系邮箱:1092575682@qq.com

(0)
上一篇 2024年10月30日 下午11:26
下一篇 2025年1月24日 下午10:51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我

159-7059-1287

在线咨询: QQ交谈

邮件:1092575682@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信