【发布时间】:2013-01-29 06:12:43
【问题描述】:
我使用processing.js 在canvas 上绘制一些形状。
如果我在画布上绘制超过 100-200 个不断移动的圆圈,则 FPS 会显着下降。如果我删除绘图,FPS 会回到 60,因此其他任务不会影响 FPS。
fill(mR,mG,mB);
ellipse(mX,mY,mRadius,mRadius);
我知道,例如,对于复杂的形状,您可以将它们绘制到内存中的另一个画布上以缓存它们,然后将该画布简单地绘制到主画布上。
有什么方法可以提高这种绘图性能?
一些可能有帮助的链接:
http://www.html5rocks.com/en/tutorials/canvas/performance/
http://ramkulkarni.com/blog/improving-animation-performance-in-html5-canvas-part-ii/
但我无法在我的上下文中使用这些,也无法将它们与 Processing.js 集成。
编辑: 实际上,它看起来可以在 fps 开始下降之前处理约 1000 个形状。在 i5 处理器和 GTX660 gpu 上启用了 GPU 渲染的 Google Chrome 上进行了测试。
我想这已经很不错了,但是有什么办法可以增加一些额外的 FPS 吗?
【问题讨论】:
-
你能链接你的代码吗?试试 pushMatrix() 和 popMatrix()?
-
pushMatrix() 和 popMatrix() 有什么帮助?我简单地调用椭圆200次/帧,就是代码。
-
你应该发布一些代码或 jsfiddle...
-
出于好奇,用 Fabric.js 重写了这个。在我的 Chrome 26(macbook pro、os x)上达到 35fps。 jsfiddle.net/dmvFe/2
-
如何在 fabric.js 上查看 fps?
标签: javascript performance canvas processing.js