gpt4 book ai didi

android - 动态壁纸水波纹效果

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:47 26 4
gpt4 key购买 nike

我正在制作动态壁纸,在触摸屏幕时加入一些水波纹效果,但我有点卡住了。

创建多个图像并循环遍历它们以创建波纹动画会更好,还是在我将位图放在 Canvas 上之前稍微扭曲位图会更好?

This是一个通过 OpenGL 完成的非常好的波纹效果的视频。

我还没有任何使用 OpenGL 的经验,想知道是否仍然可以在动态壁纸上创建 2D 水效果?

最佳答案

我也想在 Android 中实现逼真的涟漪效果,所以分享我的经验:

作为引用实现,我使用了 Neil Wallis Java 算法的 Sergey 的 Chikuyonok JavaScript 端口。这是一个 Playground ,您可以在其中试验原始 JS 代码:http://jsfiddle.net/esteewhy/5Ht3b/6/

起初,我将 JS 代码移植到 Java 只是为了意识到在我的华为 U8100 硬件上无法压缩超过 1 fps。 (网上有几个类似的尝试,唯一的结论是:它们慢得离谱)。

顺便说一句,这个 SO 答案对于基本了解如何在 Android 中编写交互式图形非常有用:https://stackoverflow.com/a/4946893/35438 .我从那里借来了 fps 计数器。

然后我决定尝试使用 Android NDK 在纯 C 中重新实现原始算法(我在 10 多年里第一次遇到它!)。尽管 NDK 的文档有些令人困惑(尤其是在要求和先决条件方面),但它们都非常有效,所以我能够达到 30 fps——它可能不会太令人印象深刻,但仍然是对 Java 代码的根本改进.

最后,我把所有的工作都放到了网上:https://github.com/esteewhy/whater , 所以请随意玩。它包含:

  1. 上面提到的交互式弹跳球代码(仅供引用)。
  2. 水波纹 Java 端口(慢得要命!)
  3. 水波纹C实现(需要NDK编译和JDK创建.h文件)。

(该项目不是“干净的”,即:所有二进制文件都在那里,因此即使没有 NDK 也可以尝试“按原样”运行它。)

enter image description here

关于android - 动态壁纸水波纹效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com