多语言展示
当前在线:120今日阅读:165今日分享:48

如何在cocos引擎中优化Html5游戏开发的性能

cocos引擎通过一系列的优化措施,在设计之初就注重各项功能的实现和性能的有机结合,保证cocos引擎在使用上没有各种性能上的短板。HTML5游戏引擎中,WebGL性能够强,可惜不是所有浏览器都能支持,要实现伟大的跨平台目标,引擎就必须兼容性能次之的Canvas。还好Canvas的表现还不错,经过优化,Canvas模式下引擎性能表现毫不逊色。
工具/原料

cocos引擎

方法/步骤
1

从逻辑层面和渲染层面相互配合,引入DirtyRegion的方法,利用少量的逻辑控制,在耗时最大的渲染环节,不该重画的部分坚决不画。通过优化,需要做的事情变少了,渲染效率高了,带来的更大利好是系统级别的省电,在移动设备上,这个优势会变得日益明显。

2

图1优化之后的TileMap测试例(4400个Tile 60帧)第二步,引擎利用临时Canvas作为缓存,用来缓存需要大量渲染处理的图层中间结果,频繁使用时,直接复制,不需要经过繁琐的步骤获得。通过优化可提升渲染环节的处理效率,加速引擎在特定情景模式下的运行速度。

3

下面列举一个性能对比的例子:在进行优化之前,运行TileMap测试例,4400个Tile构成的地图,每次在画面中显示,都需要将无数多的Tile拼成一幅图,再显示出来,想想也知道会多么浪费资源。在Mac Pro 13寸上的Chrome浏览器上,Canvas模式下只能运行到8-10帧。引擎通过图层缓存来优化,效果立竿见影,相同环境运行帧率立刻就有60帧了。

4

那么就只能达到60帧吗?其实不是,只有60帧是因为浏览器有帧率控制。为了看到极限速度,可以将Chrome的帧率限制关闭掉,硬耗CPU计算,可以看到这个测试例的满负载帧率可达250多帧。不过,如此大的帧率已超出显示器的显示范畴,没有实际意义,它只是用来告诉我们它究竟能跑多快。

5

图3关闭Chrome VSync的测试例(4400个Tile 251帧)第三步,引擎性能优化工作还体现在不可视区域渲染和像素级渲染的优化上。Canvas默认是画出你要它画的所有东西,是个忠实的执行者,不管你是否画在了不可视区域内,不像OpenGL会把不可视区域自动优化掉。所以我们选用手动模式,优化之后效果也是非常卓越的。

6

至于像素级的渲染优化,在非拼接类型的Sprite、Label等资源,就可以应用。以上是优化前后对比图。

推荐信息