javascript - HTML5 Canvas 中的热变形/水下视觉效果

标签 javascript jquery css html canvas

我们正在使用 HTML5 和 Canvas 技术开发集换式卡牌视频游戏(适用于台式机和移动设备,因此理想情况下必须非常适合移动设备,否则我们将不得不在这些低端设备上停用此图形功能)。

我们发现,如果我们可以在某些特定的 Canvas /场景元素上实现一些热变形(或某种水下/湍流)效果,就会为我们的俯 View 环境(关卡)增添很多生命力,比如纯草地形和植被 Prop ,以便在视觉上模拟(在某种程度上)随机动画风湍流对那些特定 Canvas /场景元素的影响(最好使用 mask ,以便仅影响预先确定的区域 Canvas )。

根据风力控制使效果变得强烈或微妙,以及对风向的控制将很容易实现。我们只需要找到一些坚实的基础来开始工作。

为了确保您正确理解我们需要的效果,请观看这​​些视频:http://www.youtube.com/watch?v=brcMUHPNy-Y/http://www.youtube.com/watch?v=nZtmLCaYoHc

为此,我们在 Google 上搜索了很多,但没有找到任何预制解决方案来实现这种相对简单的效果。我们希望尽可能避免使用 WebGL 和 threeJS,以及预渲染或预动画任何图形。

知道如何使用代码实现这种效果吗?

最佳答案

这是您开始性能测试的起点,但我警告说,移动设备上的湍流效应可能会消耗超出可接受范围的资源。

Almer Thie 使用 html canvas 做了一个漂亮的水波纹效果:

http://code.almeros.com/code-examples/water-effect-canvas/#.VCr6tfldV8E .

他的解决方案通过 context.getImageData 使用像素操作来实现效果。事实上,所有像素湍流效果都必须使用 .getImageData 来完成所需的像素操作。

问题是 .getImageData 从未被 GPU 优化,因此它在功率较小的设备(如移动设备)上运行速度非常慢。

您可以使用 Almers 演示作为基准来判断像素操作对于您的移动元素是否可行。我祝你一切顺利......但我担心最坏的情况:-(

关于javascript - HTML5 Canvas 中的热变形/水下视觉效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127437/

相关文章:

javascript - 使用 Perl 或 Python 进行 Hacky 文档网站搜索

javascript - 从 JS 变量更新查询字符串中的 PHP 变量

javascript - ExtJS 中列系列等的可靠示例?

javascript - 如何在固定宽度和高度的div内对齐四个圆圈

css - Bootstrap 粘性页脚代码在高度和填充之间发生冲突

javascript - Socket.IO 缩写 io 代表什么?

php - 向 MYSQL 添加变量

javascript - 如何强制表格宽度等于其子 td 宽度并允许表格超出视口(viewport)宽度

jquery - 我正在尝试访问一个类(class),但我无法访问

css - 具有相同宽度的 float 元素