平台 - > cocos2D,iOS
第1步:使用 ImageFormat =“RGBA8888”从FileName.pvr.ccz(TexturePacker)加载动画 在x-code Instruments 10.0 MB中显示内存使用情况。
第1步:使用 ImageFormat =“RGBA4444”从FileName.pvr.ccz(TexturePacker)加载动画 在x-code Instruments 10.0 MB中显示内存使用情况。
问题 - >为什么在使用较低的 ImageFormat =“RGBA4444”而不是较高的 ImageFormat =“RGBA8888”时,它在内存使用方面没有任何差异?
TexturePacker文件大小= 2047 * 1348
答案 0 :(得分:0)
默认纹理格式为RGBA8888,因此如果您有RGBA4444纹理,则需要在加载纹理之前更改格式(之后可能会将其更改)。
更改新创建纹理的纹理格式的方法是class method of CCTexture2D:
+ (void) setDefaultAlphaPixelFormat:(CCTexture2DPixelFormat)format;
答案 1 :(得分:0)
我发现此错误会导致我的内存大小相同: - http://www.cocos2d-iphone.org/forum/topic/31092。
在CCTexturePVR.m中 - >
// Not word aligned ?
if( mod != 0 ) {
NSUInteger neededBytes = (4 - mod ) / (bpp/8);
printf("\n");
NSLog(@"cocos2d: WARNING. Current texture size=(%tu,%tu). Convert it to size=(%tu,%tu) in order to save memory", _width, _height, _width + neededBytes, _height );
NSLog(@"cocos2d: WARNING: File: %@", [path lastPathComponent] );
NSLog(@"cocos2d: WARNING: For further info visit: http://www.cocos2d-iphone.org/forum/topic/31092");
printf("\n");
}
它的cocos2d或iOS bug可以通过调整pvr.ccz大小来处理 尺寸尺寸应该可以被4整除,但不能被2的幂整除。它将解决bug并获得Both Format
的预期内存差异