Cocos2d 初学基本知识

1. 纹理(Texture)

游戏角色的图像文件在使用前必须解压缩,并转换成 iPhone 和 iPad 的 GPU 可以理解的 格式,同时要加载进 RAM(随机存储器),这样的图像称为纹理。GPU 原生支持一系列压缩 格式,如 PVRTC,其他格式必须存储为未压缩的图像数据。OpenGL ES 可以使用这些数据 在屏幕上绘制图像,所使用的 PNG 图像文件虽然在闪存中不占用多少空间,但是因为要解压缩,所以会在内存中占用更大的空间。

2. 纹理图集(TextureAtlas)

对于 iPhone 和 iPad 设备而言,内存是非常宝贵的。而且 iOS 设备的 GPU 使用共享显存, 而不是独立显存,换句话说,GPU 将使用主系统的内存来存储纹理图和几何图形。旧版 iOS 设备的内存是 128MB。

让这种内存限制更捉襟见肘的是,旧版 iOS 设备中,图像填充到纹理中时,其长度和宽 度必须使用 2 的乘方。虽然 iPhone 3GS 和 iPhone 4、iPad 等设备支持非 2 的乘方大小的纹理 图,但在 Cocos2D 中,为了兼容所有设备,仍然使用 2 的乘方来填充纹理。当然,也可以在 ccConfig.h 文件中修改这一点。

为了节省内存空间,并减少纹理中的浪费空间,将把这些纹理拼合成为一个大的纹理图, 称为纹理图集。纹理图集只是一个大的纹理图而已,其中包含所有的图像。想象有一大张纸, 然后把自己的照片都贴在上面,在需要时从纸上把照片剪下来。如果想把所有照片一次性给 别人,只需给这一大张纸就行,而不需一张张地递过去。OpenGL ES 处理图像也是类似,如 果使用纹理图集或精灵表单(Spritesheet)把所有图像一次性交给 OpenGL ES 来处理,比把单 个图像逐个交给 OpenGL ES 处理要高效。 

 

CCSpriteFrame 精灵帧

与我们之前了解的节点类不同,CCSpriteFrame 和 CCSpriteFrameCache 都直接继承自 Objective-C 中的 NSObject。

CCSpriteFrame(精灵帧)中主要包括 CCTexture2D 纹理、矩形大小,用来表示一个精灵。 

posted @ 2014-11-26 14:32  幻化成疯  阅读(197)  评论(0编辑  收藏  举报