Ios 使用RGBA888和RGBA4444加载动画,显示内存使用情况无差异,平台cocos2D&;网间网操作系统

Ios 使用RGBA888和RGBA4444加载动画,显示内存使用情况无差异,平台cocos2D&;网间网操作系统,ios,memory-management,cocos2d-iphone,texturepacker,Ios,Memory Management,Cocos2d Iphone,Texturepacker,平台->cocos2D,iOS 步骤1:使用ImageFormat=“RGBA8888”从FileName.pvr.ccz(TexturePacker)加载动画 以10.0 MB的x代码仪器显示内存使用情况 步骤1:使用ImageFormat=“RGBA4444”从FileName.pvr.ccz(TexturePacker)加载动画 以10.0 MB的x代码仪器显示内存使用情况 问题->为什么在使用较低的ImageFormat=“RGBA4444”而不是较高的ImageFormat=“rgba

平台->cocos2D,iOS

步骤1:使用ImageFormat=“RGBA8888”从FileName.pvr.ccz(TexturePacker)加载动画 以10.0 MB的x代码仪器显示内存使用情况

步骤1:使用ImageFormat=“RGBA4444”从FileName.pvr.ccz(TexturePacker)加载动画 以10.0 MB的x代码仪器显示内存使用情况

问题->为什么在使用较低的ImageFormat=“RGBA4444”而不是较高的ImageFormat=“rgba888”时,内存使用率没有显示任何差异


TexturePacker文件大小=2047*1348

默认纹理格式为RGBA888,因此,如果您有RGBA4444纹理,则需要在加载纹理之前更改格式(之后可能会更改回)

更改新创建纹理的纹理格式的方法是:


我发现此错误导致两种格式的内存大小相同:-

在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错误可以通过调整pvr.ccz大小来处理
尺寸应能被4整除,但不能被2的幂整除。它将解决这两种格式的错误并获得预期的内存差异

我将defaultFormat更改为RGBA4444,但当我将其用于简单PNG时,它将内存使用量减少到一半,但对于TexturePack,它的内存使用量相同或没有效果。我正在使用[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:…]加载带有plist文件的动画。它应该也可以工作,请确保在加载精灵帧之前更改alpha像素格式。如果这对搜索setDefaultAlphaPixelFormat方法没有帮助,那么可以尝试使用setDefaultAlphaPixelFormat方法-可能是sprite帧缓存或加载纹理图集时触发的其他代码更改了格式。
            // 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");
            }