1.在加载图片之前,转换像素格式
默认情况下,cocos2d里面加载图片,图片是作为作为32位加载进来的。这意味着每个像素占4个字节的内存空间。当需要非常高质量的显示效果时非常好!但是有时候需要折中一下,因为以前的设备内存很有限,如果全部使用32的像素格式来加载图片的话,会造成内存消耗过多。
当加载大的图片的时候(比如背景图片),最佳实践是使用16位的像素格式来加载–也就是牺牲一点质量来减少内存开销。cocos2d里面有很多不同的像素格式 –这个教程中,我们选择16位的像素格式,RGB565,因为背景一般不需要透明效果。(少了Alpha通道,RGBA就是有Alpha通道)
示例
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGB565];
background = [CCSprite spriteWithFile:@"blue-shooting-stars.png"];
background.anchorPoint = ccp(0,0);
[self addChild:background];
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_Default];
2.CCSpriteFrameCache加载的是一张拼接过的大图,每一个小图只是大图中的一个区域,这些区域信息都在plist文件中保存。用的时候只需要根据小图的名称就可以加载到这个区域。
CCTextureCache 是普通的图片缓存,我们所有直接加载的图片都会默认放到这个缓存中,以提高调用效率。
addImage的参数是资源中的直接存在图片文件名
[[CCTextureCache sharedTextureCache] addImage:@"stars.png"];
3.调用CCSpriteFrameCache的addSpriteFramesWithFile方法,然后把Zwoptex生成的plist文件当作参数传进去。这个方法做了以下几件事:
•寻找工程目录下面和输入的参数名字一样,但是后缀是.png的图片文件。然后把这个文件加入到共享的CCTextureCache中。
•解析plist文件,追踪所有的sprite在spritesheet中的位置,内部使用CCSpriteFrame对象来追踪这些信息。
4.优化cocos2d/x程序的内存使用和程序大
http://xiaominghimi.blog.51cto.com/2614927/1085955
iOS和android游戏纹理优化和内存优化
http://www.verydemo.com/demo_c89_i33080.html
分享到:
相关推荐
`CCTexture2D`通常用于加载和管理静态图像纹理,而`CCRenderTexture`则允许动态生成和修改纹理。`CCTexture2DMutable`可能是`CCRenderTexture`内部使用的一个变体,它支持在运行时对纹理内容进行修改。 在本示例中...
5. **音频处理**:了解如何在Cocos2D中集成音频,使用如CCTexture2D和CCLabelTTF进行文本显示,以及如何播放背景音乐和音效。 6. **游戏逻辑与得分系统**:学习如何编写游戏规则和逻辑,设置得分系统,并将玩家的...
开发者可以使用`CCTexture2D`加载并显示图片,而`CCAudioPlayer`则用于播放背景音乐和音效。示例可能展示了如何在游戏运行时动态加载和播放音频,以增强游戏的沉浸感。 最后,Cocos2D还支持粒子系统、Tiled地图编辑...
4. CCTexture2D:处理图像纹理,为精灵提供图像数据。 三、动作与效果 1. CCAction:定义了一系列操作,如移动、旋转、缩放、淡入淡出等,可以应用到CCNode对象上。 2. CCAnimate:用于播放动画序列,通常配合...
CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(img); CCSprite* sprite = CCSprite::createWithTexture(texture); ``` 创建的`CCImage`对象进一步被用于初始化一个`CCTexture2D`对象,即图像...
此外,cocos2d-x还提供了丰富的图形绘制功能,如CCDrawNode可以绘制线条、多边形等几何形状,CCLabel用于创建文本标签,以及 CCTexture2D 和 CCSpriteFrameCache 用于处理纹理和精灵帧。在物理引擎方面,cocos2d-x...
9. **纹理(Texture)**:`CCTexture2D`类管理游戏中的纹理资源,包括加载、缓存和重复使用。 10. **动画(Animation)**:通过`CCAnimation`类,开发者可以创建和播放精灵帧序列,实现复杂的动画效果。 11. **...
5. CCTexture2D:纹理管理,负责图像资源的加载和缓存,优化内存使用。 6. CCDirector:导演类,管理场景的切换、渲染流程和时间步进。 7. CCNode:节点类,作为所有可见对象的基类,具备坐标系统、变换矩阵等基本...
在Cocos2d-x中,动画通常由一系列的精灵帧(SpriteFrame)组成,每个精灵帧对应于一个单独的图像(纹理,CCTexture2D)。当我们创建动画时,会基于这些纹理生成精灵帧,并将它们组织成一个动画序列。这样,我们就...
7. **音频管理**:`CCTextureCache`用于管理纹理资源,`CCTexture2D`类处理图像数据。同时,`CDAudioManager`和`SimpleAudioEngine`负责音频播放和管理。 8. **渲染系统**:Cocos2d-x基于OpenGL ES进行渲染,`...
3. CCTexture2D:纹理管理类,涉及图片加载和纹理 atlasing 的实现。 4. CCSpriteFrameCache:精灵帧缓存,用于存储和复用精灵帧数据,优化内存使用。 5. CCMenu和CCMenuItem:菜单和菜单项的实现,用于创建用户交互...
这个方法会解析文件,创建一个CCTexture2D对象,并将其存储在缓存中。如果同一个文件被多次加载,CCTextureCache会检查是否已经存在该纹理,从而避免重复加载。 2. 获取纹理:使用`getCachedTextureForImage(const ...
3. **自定义纹理格式**:《君王2》开发了一套自定义的纹理格式,并扩展了CCTexture2D类。这种压缩纹理格式相比PNG24格式可以节省4至8倍的内存占用,并大幅提高了图片加载速度。程序能够根据平台类型决定下载何种格式...
同时,` CCTexture2D `类用于加载和管理图像纹理,这些纹理可以作为绘图的基础,也可以用于创建精灵。 4. **几何形状绘制**:使用`CCDrawNode`的`drawRect:`、`drawCircle:`、`drawPolygon:`等方法,可以直接在屏幕...
在cocos2dx中,我们使用`CCSprite`类加载和显示图片,`CCTexture2D`用于管理纹理,`CDAudioManager`处理音频播放。资源管理是游戏性能优化的关键,cocos2dx提供了`CCFileUtils`类来便捷地访问和加载资源。 Classes...
let texture = CCTexture2D(imageNamed: "texture.png") material.diffuseTexture = texture ``` 通过这种方式,开发者可以在不改变3D模型本身的情况下,实现丰富的视觉效果和交互体验。 总结来说,"代码控制3D...
CCTexture2D *shipTexture = CCTextureCache::sharedTextureCache()->addImage(s_ship01); CCSprite *life = CCSprite::createWithTexture(shipTexture, CCRectMake(0, 0, 60, 38)); life->setScale(0.6); life-...
1. **纹理加载**:使用` CCTexture2D `类来加载精灵表文件,如PNG或JPG格式的图片。 2. **纹理切割**:通过` CCRect `定义切割区域,可能使用自定义的算法或Cocos2D-x的` CCTextureAtlas `类来完成。 3. **精灵...
CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("sprites.png"); // 获取精灵帧 CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprites.plist"); // 创建...