Reputation: 34026
I am developing a game for html5 canvas while mainly targeting mobile devices. The canvas is resized to the biggest available resolution, so that it almost makes a fullscreen game.
On an ipad that would be a 1024x786 canvas; at a resolution like this I notice a significant drop in framerate. On smaller resolution like 480x320 on iphone the game runs smooth! I guess this is because the device is fillrate limited.
Anyhow I would like to optimize as much as possible. I would be very grateful if you could post any general performance tips that you have for html5 canvas development.
Upvotes: 30
Views: 18655
Reputation: 8472
Also see this canvas performance optimization article on html5rocks, which contains jsperf data which includes mobile browsers.
Upvotes: 25
Reputation: 26873
A couple of more links:
It's hard to give any specific tips as I'm not familiar enough with your game. You might want to split up rendering to multiple layers, though. This makes sense particularly if you have some static elements there. This way you can avoid some clearing and end up with nicer code overall.
Upvotes: 5
Reputation: 50109
You can read Making an iPad HTML5 App & making it really fast by Thomas Fuchs
The key points he make:
text-shadow
& box-shadow
opacity
if possible (sometimes interferes with hardware-accelerated rendering)translate3d
, not translate
(the latter is not hard-accelerated)Some other points that can improve performance significantly:
getImageData
as infrequently as possible (major slowdown) [2]You can also benchmark your app with Chrome/Firebug Profile can show you which functions are slow.
[2] http://ajaxian.com/archives/canvas-image-data-optimization-tip
Upvotes: 13