登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

显微镜

吃饭吃菜

 
 
 

日志

 
 

html5 canvas 的效率问题  

2011-06-15 22:50:46|  分类: html5 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近在写一个html5的射击游戏,由于想做的华丽点,所以必须尽量的优化代码。

游戏地址http://06wjin.sinaapp.com/html5/shoot/

html5 canvas 的效率问题 - FIR - 06wj的博客

 

主要的性能消耗在绘图上,以下为影响因素,来自northwind_x的博客

       a. 影响最大的为刷新频率,这也是显而易见。

b. putImageData比drawImage效率高很多。putImageData是把一块区域的像素集直接放到画布上,会替换到画布原有图像,但是效率极高。 

c. 每次更新时clearRect会很耗资源,但把ff缩小时,消耗就很少了,clearRect主要是耗显卡导致cpu上升了。最好能区域更新

d. 多个画布叠加时,即使每个画布工作量很少,叠加数量在3个以上时,cpu占用率就会大幅提升,估计是在浏览器处理时还是需要做canvas的像素操作。

e. 在canvas上放有背景色的div层,对效率影响不大,就是说如果有可能就用静态HTML做

f.  画同样数量的Image时,虽然画出的尺寸一样大,但是图片较小的占用资源较少

g. drawImage时,画bmp要比png占用cpu小很多,不需要考虑透明度。

h. putImageData时,bmp和png占用内存基本一样多。

i.  putImageData时,隐藏与显示画布占用资源基本一样多。

 

还有一个优化方法是事先把所有图片画在隐藏的canvas上,用的时侯直接画这个隐藏的canvas,也会提高点效率
代码如下
var asset = assets[name];
var canvas = document.createElement("canvas");
canvas.setAttribute("width", asset.width);
canvas.setAttribute("height", asset.height);
 var cachecontext = canvas.getContext('2d'); cachecontext.drawImage(asset.image, 0, 0);
 cache[name] = canvas;
  评论这张
 
阅读(3909)| 评论(3)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018