javascript - html5 canvas 变换和缓存渐变、曲线和旋转

标签 javascript html optimization canvas

我正在 Canvas 上制作一个游戏,到目前为止我的大部分绘图都是实体形状和弧线。但我想添加模糊和阴影等效果来创建发光和轨迹效果。

我的问题是,是否有一种无需外部库的好方法来缓存发光元素(玩家、敌人等),是否值得这样做而不是每次都重新创建效果?轮换也是如此。如果我在玩家旋转飞船时重复绘制大约 40 个不同的 Angular ,我是否应该缓存这些计算?

我目前正在使用手动变换来旋转弧线末端,而不是旋转上下文,因为我还不知道这是否比针对许多屏幕元素及其不同 Angular 重复旋转 Canvas 效率更高或更低

最佳答案

模糊和阴影效果不包含在主 Canvas 库中,但您可以创建自己的库,也可以使用外部 Canvas 库,例如 easel.js但有大量与 HTML5 相关的不同库 <canvas> 。您可以选择最适合您的。

关于模糊效果,您可以使用 Mario Klingeman stackblur javascript 实现: http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html 。它易于使用且速度超快。

对于发光效果,随机纹理生成的一个好方法是已经在 javascript 中实现的单纯形噪声算法:https://gist.github.com/304522或原始版本:http://mrl.nyu.edu/~perlin/noise/

对于最后一个问题,我建议您使用context以获得更好的性能。 saverestore功能。速度快得多。

关于javascript - html5 canvas 变换和缓存渐变、曲线和旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534895/

相关文章:

html - embed、object 和 video 的 HTML 标签之间的区别?

c++ - 扩展具有相同条件的多个 "if"会导致性能提升

javascript - Selenium : How to send variable character strings through executeScript()

javascript - 知道您是通过应用程序还是通过网站运行

jquery - 单个网站中的两个幻灯片放映不起作用

java - 我的 Android 应用程序正在耗尽电池电量吗?

python - 在 PuLP 中使用线性规划优化排类

javascript从字符串中提取html block

javascript - 如何在Javascript中检测页面的宽度和高度?

javascript - html div 重叠在具有较高 z-index 的图像上时不会获得鼠标点击