使用RGBA8888和RGBA4444加载动画,显示内存使用没有差异,平台cocos2D& iOS版

时间:2014-04-01 12:12:54

标签: ios memory-management cocos2d-iphone texturepacker

平台 - > 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

2 个答案:

答案 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

的预期内存差异