SpriteFrameCache和SpriteBatchNode

Cocos2d中SpriteFrameCache通常用来处理plist文件,并能与SpriteBatchNode结合使用来达到批处理渲染精灵的目的。

1)精灵帧缓存类SpriteFrameCache

2)精灵帧缓存类SpriteFrameCache 用来存储精灵帧,缓存精灵帧有助于提高程序的效率。 SpriteFrameCache是一个单例模式,不属于某个精灵,是所有精灵共享使用的。

3)精灵批处理节点SpriteBatchNode

当你需要渲染显示两个或两个以上相同的精灵时,如果逐个渲染精灵,每一次渲染都会调用 OpenGL ES 的 draw 函数,这样做自然降低了渲染效率。不过幸好,Cocos2d为开发者提供了一个SpriteBatchNode类,它能一次渲染多个精灵。并可以用来批处理这些精灵

在init()方法中调用SpriteFrameCache的addSpriteFramesWithFile方法,传入plist文件名称,它会从plist属性列表文件的元数据部分获取各个纹理的纹理名,载入到纹理缓存中。并解析属性列表文件,使用SpriteFrame对象来内部地跟踪所有精灵的信息。

在Cocos2d中高效使用图片总结:

使用TexturePacker打包图片成pvr.ccz文件,使用SpriteBatchNode优化绘制,使用SpriteFrameCache缓存读取,使用spriteWithFrameName获取单张图片。

时间: 2025-01-01 09:23:30

SpriteFrameCache和SpriteBatchNode的相关文章

COCOS2DX 3.0 优化提升渲染速度 Auto-batching

最近在看COCOS2DX 3.0的Auto-batching合批与Auto Culling动态缩减功能下面就来仔细看看吧:整合好的渲染提速干货: 简介 在游戏的绘制渲染中,往往消耗很多资源和内存,当绘制精灵数量越多,游戏的卡顿会很明显,为了优化和提升渲染效率.Cocos2d-x为我们提供了Auto-batching和SpriteBatchNode. Auto-batching 意思是Renderer将多次draw的调用打包成一次big Draw 调用.(又名批处理). SpriteBatchNo

cocos2dx-3.0(13)------SpriteBatchNode与SpriteFrameCache渲染速度

大家都知道一个游戏里面会有大量的图片,每一个图片渲染是须要时间的,以下分析两个类来加快渲染速度,加快游戏执行速度 一.SpriteBatchNode 1.先说下渲染批次:这是游戏引擎中一个比較重要的优化指标,指的是一次渲染凋用. 也就是说,渲染的次数越少,游戏的执行效率越高. 2.SpriteBatchNode就是cocos2d-x为了减少渲染批次而建立的一个专门管理精灵的类. 有人会问.怎么高速知道究竟渲染了多少次了.告诉你吧,游戏左下角有三行数据: GL verts 表示给显卡绘制的顶点数

【Cocos2dx 3.3 Lua】SpriteBatchNode和SpriteFrameCache使用

精灵帧缓存类 一.SpriteFrameCache 精灵帧缓冲类SpriteFrameCache用于存储精灵帧,SpriteFrameCache是一个单例模式,不属于某一个精灵,是所有精灵共享的: 说明: @js NA @lua  NA 表示的意思是: 具体实例: 二.SpriteBatchNode Sprite 和 SpriteBatchNode v2.2 2.2版本中推荐的优化游戏方式是将 SpriteBatchNode 对象设置为 Sprite 对象的父节点. 虽然使用SpriteBatc

cocos2dx SpriteBatchNode 精灵的渲染优化类

用处是减少对精灵的渲染次数,用法如下 1 SpriteFrameCache::getInstance()->addSpriteFramesWithFile("person.plist"); 2 SpriteBatchNode *node = SpriteBatchNode::create("person.png"); 3 bg->addChild(node); 4 5 SpriteFrame *frame = SpriteFrameCache::getI

cocos2d-x3.0 SpriteFrameCache

bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } auto s = Director::getInstance()->getWinSize(); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("grossini.plist&quo

SpriteFrameCache 精灵帧缓存

//获取精灵帧缓存的单例对象 auto  spriteFrameCache = SpriteFrameCache::getInstance(); //从plist文件添加多个精灵帧 spriteFrameCache->addSpriteFrameWithFile("XX.plist"); //根据图片名称创建一个精灵帧 auto sprite1Frame =spriteFrameCache->getSpriteFrameByName("xxx.png")

【cocos2d-js官方文档】十四、cc.spriteFrameCache 改造说明

统一引擎内部创建SpriteFrame的数据结构 将Plist的解析工作转移到了cc._plistLoader中去,对SAXParser进行了改造. 统一了引擎创建SpriteFrame的数据结构: { _inited : true, frames : { "a_frame_0.png" : { rect : {x : 0, y : 0, width : 1, height : 1}, rotated : false, offset : {x : 0, y : 0}, size : {

购买李宁Cocos2d-x套餐,送最新出的《Cocos2d-x游戏实战指南》签名书一本

活动时间:2016-10-18至2016-11-30 通过本套餐,可完全了解Cocos2d-x 3.x的相关技术,以及掌握C++语言,并具有一定的项目实战经验. Cocos2d-x游戏开发套餐:http://edu.51cto.com/pack/view/id-114.html <Cocos2d-x游戏实战指南>封面 本书月底出版,触控科技副总裁Jane.微软开放体验和合作事业部开发技术顾问梅颖广.51CTO学院运营总监曹亚莉.哈尔滨工业大学  王峥  联袂推荐 目录 第1章     初识CO

cocos2d-js 帧序列动画

1.resource.js var res = { playerWalk_plist:"res/playerWalk.plist", playerWalk_png:"res/playerWalk.png" }; var g_resources = []; for (var i in res) { g_resources.push(res[i]); } 2.app.js var HelloWorldLayer = cc.Layer.extend({ sprite:nu