我在画布上制作了一个游戏,其中大部分的图形都是实体形状和弧形。但我想添加模糊和阴影等效果来创建发光效果和效果。html5 canvas转换和缓存渐变,曲线和旋转
我的问题是,是否有一个很好的方式,没有外部库,缓存发光元素(玩家,敌人等),是否值得这样做,而不是每次都重新创建效果?旋转也一样。如果我有大约40个不同的角度,我会在玩家旋转他们的船时反复绘制,我是否应该缓存这些计算?
我目前正在使用手动变换来旋转弧末端,而不是旋转上下文,因为我还不知道这是否比多次旋转画布对多个屏幕元素及其不同角度有效率更高或更低效率
does not default canvas has shadowblur? http://www.williammalone.com/articles/html5-canvas-example/ 我正在考虑使用它,并不断改变半径以获得辉光般的效果。 对于变换,你说为每个对象的每个对象平移和旋转整个画布比仅为每个形状上需要绘制形状的点上的点手动计算变换更快? – user864572 2012-07-18 14:58:07
“shadowBlur”只适用于对象的阴影,而不适用于对象/形状本身。所以如果你想模糊对象而不是模糊的阴影,你需要编写自己的模糊算法或使用其他第三方库。平移和旋转画布肯定会更快,通过倾斜和旋转变换矩阵来计算形状。为了获得更快的性能,您可以将要转换的图形放入单独的较小的画布中。看到测试:http://jsperf.com/canvas-transform-vs-save-restore – 2012-07-18 17:45:42
那么我的游戏主要使用我通过定义曲线和和路径定义的形状,并且我计划通过使用遍布整个物体的阴影。 – user864572 2012-07-18 20:09:02