Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5画布变换和缓存渐变、曲线和旋转_Javascript_Html_Optimization_Canvas - Fatal编程技术网

Javascript html5画布变换和缓存渐变、曲线和旋转

Javascript html5画布变换和缓存渐变、曲线和旋转,javascript,html,optimization,canvas,Javascript,Html,Optimization,Canvas,我正在画布上做一个游戏,到目前为止,我画的大部分都是实心形状和圆弧。但我想添加像模糊和阴影这样的效果来创建辉光和轨迹效果 我的问题是,有没有一种没有外部库的好方法来缓存发光元素玩家、敌人等,这样做是否值得,而不是每次都重新创建效果?旋转也是如此。如果我有大约40个不同的角度,当玩家旋转他们的飞船时,我会重复绘制,我应该缓存这些计算吗 我目前正在使用手动变换旋转圆弧端点,不要旋转上下文,因为我不知道这是否比重复旋转画布更有效,因为许多屏幕元素及其不同角度的模糊和阴影效果不包括在主画布库中,但您可以

我正在画布上做一个游戏,到目前为止,我画的大部分都是实心形状和圆弧。但我想添加像模糊和阴影这样的效果来创建辉光和轨迹效果

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


我目前正在使用手动变换旋转圆弧端点,不要旋转上下文,因为我不知道这是否比重复旋转画布更有效,因为许多屏幕元素及其不同角度的模糊和阴影效果不包括在主画布库中,但您可以创建自己的库,也可以使用外部画布库,如but有很多不同的库与HTML5相关。你可以选择最适合你的

关于模糊效果,您可以使用Mario Klingeman stackblur javascript实现:。它使用方便,速度极快

对于发光效果,随机纹理生成的好方法是javascript中已经实现的单纯形噪波算法:或此处的原始算法:


对于最后一个问题,我建议您使用上下文保存和恢复功能以获得更好的性能。速度要快得多。

默认画布没有阴影模糊吗?我正在考虑使用它,并不断改变半径,以获得一种发光效果。对于变换,你是说每帧平移和旋转每个对象的整个画布比手动计算每个形状上的点的变换更快,我需要能够绘制形状?阴影模糊只适用于对象的阴影,而不适用于对象/形状本身。因此,如果要模糊对象而不是阴影,则需要编写自己的模糊算法或使用其他第三方库。平移和旋转画布肯定比通过倾斜和旋转变换矩阵计算形状更快。为了获得更快的性能,您可以将要转换的形状放入一个单独的、更小的画布中。请看测试:我的游戏主要使用我通过定义曲线和路径定义的形状,我计划在整个对象周围使用阴影模糊来创建光晕。