Fast TileMap
来源:互联网 发布:女孩穿衣打扮知乎 编辑:程序博客网 时间:2024/06/05 17:12
概述
在游戏中常常会有丰富的背景元素,如果直接使用大的背景图实现,这会造成资源浪费。TileMap就是为了解决这问题而产生的。Cocos2d-x支持使用Tile地图编辑器创建的TMX格式的地图。
Cocos2d-x为我们提供了TMXTileMap和TMXLayer两个类来处理瓦片地图。通过使用TMXTileMap和TMXLayer,我们可以很方便的加载TMX格式的地图文件,获取地图上的图层、对象、属性等信息。
新发布的3.2版本,对瓦片地图进行了大幅改进,通过自动裁剪不在视图范围内的瓦片来提升性能,并支持渲染更大尺寸的瓦片地图!我们称之为"Fast TileMap",下面我们就来一起研究Fast TileMap。
TileMap VS Fast TileMap
Fast TileMap的不同
在3.2版本,新增了CCFastTMXTiledMap.h/CCFastTMXTiledMap.cpp/CCFastTMXLayer.h/CCFastTMXLayer.cpp
文件用于实现快速高效的瓦片地图功能。
在cocos2d::experimental的名字空间下重新实现了TMXTiledMap和TMXLayer。其中对TMXLayer的改动较大。TMXLayer
不在继承SpriteBatchNode
,改为继承Node
。并重新实现TileMap的绘制来提升性能。
- old
class CC_DLL TMXLayer : public SpriteBatchNode
- new
class CC_DLL TMXLayer : public Node
新的TMXTiledMap
接口和原有的保持一致。我们依然可以像以前那样使用TMXTiledMap创建瓦片地图。
Fast TileMap的用法
auto map = cocos2d::experimental::TMXTiledMap::create("tilemap.tmx"); addChild(map, 0, kTagTileMap);
上面代码演示了,使用Fast TileMap加载tilemap.tmx文件创建一幅地图,并加到场景中。
更多API使用方法参考:
COCOS2DX_ROOT/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp
- TileMap
性能对比
我们分别使用以前的TileMap和Fast TileMap加载同一个tmx文件创建地图,并在同一设备上进行测试。
测试设备:
MacBook Pro Retina,13-inch,Late 2012 OS X 10.9.4
TileMap
auto map = TMXTiledMap::create("TileMaps/iso-test-bug787.tmx");addChild(map, 0, kTagTileMap);map->setScale(0.25f);
运行结果:
Fast TileMap
auto map = cocos2d::experimental::TMXTiledMap::create("TileMaps/iso-test-bug787.tmx");addChild(map, 0, kTagTileMap);map->setScale(0.25f);
运行结果:
运行结果对比:
- 两者的GL calls都相同
- 使用Fast TileMap的GL verts更少
- 使用Fast TileMap的帧率更高
因为相同的GL calls(渲染次数)下,GL verts(显卡绘制的顶点数)越少,绘制效率越高。FPS(帧率)越高游戏越流畅。所以 使用Fast TileMap渲染地图的性能更优。
- Fast TileMap
- Fast TileMap ---Cocos2dx
- TileMap
- 关于cocos2d中fast tilemap出现黑线的解决方案
- fast
- FAST
- fast
- TileMap用法一
- TileMap用法二
- TileMap用法三
- 初窥cocos2d tileMap
- 八、cocos2dx之TileMap
- tilemap之基础使用
- cocos2dx之TileMap
- 瓦片地图TileMap
- TileMap高级用法
- TileMap使用细节
- 使用tilemap后的变化
- php写入文件实例代码
- hdu 3032 Nim or not Nim? 博弈
- hdu_2028_Lowest Common Multiple Plus
- poj1703
- Deepin搭建Qt5开发环境
- Fast TileMap
- springMVC-i18n&&theme实现之一
- 算法训练 关联矩阵
- [LeetCode] String to Integer (atoi)
- js 进阶知识
- 1065. A+B and C (64bit) (20)
- poj 2586
- Extremal Region(极值区域)文本定位与识别法-学习笔记(二)
- cc: 内部错误:已杀死 (程序 cc1)