cocos2d 查看pvr图片的详细格式

               

发现一个问题,伙计交过来的pvr图片,我没法确切的知道他到底使用了哪种像素格式。

想到一个办法,可以在程序加载的时候打印出一些信息来得到这些信息。

主要修改 CCTexturePVR.m 这个文件,先看看pvr支持那些像素格式:

#import <Availability.h>#import <zlib.h>#import "CCTexturePVR.h"#import "ccMacros.h"#import "CCConfiguration.h"#import "Support/ccUtils.h"#import "Support/CCFileUtils.h"#import "Support/ZipUtils.h"#import "Support/OpenGL_Internal.h"#pragma mark -#pragma mark CCTexturePVR#define PVR_TEXTURE_FLAG_TYPE_MASK 0xff#define PVR_TEXTURE_FLAG_FLIPPED_MASK 0x10000static char gPVRTexIdentifier[4] = "PVR!";enum{ kPVRTextureFlagTypeRGBA_4444= 0x10, kPVRTextureFlagTypeRGBA_5551, kPVRTextureFlagTypeRGBA_8888, kPVRTextureFlagTypeRGB_565, kPVRTextureFlagTypeRGB_555,    // unsupported kPVRTextureFlagTypeRGB_888,    // unsupported kPVRTextureFlagTypeI_8, kPVRTextureFlagTypeAI_88, kPVRTextureFlagTypePVRTC_2, kPVRTextureFlagTypePVRTC_4,  kPVRTextureFlagTypeBGRA_8888, kPVRTextureFlagTypeA_8,};
简要介绍一下,比较常用的格式有:

RGBA_8888 没像素占用4字节内存,还原度最高,纹理质量最高。

RGBA_4444 每像素占用2字节内存,背景图采用此类型较优

RGBA_5551 每像素占用2字节内存,如上

RGBA_565  每像素占用2字节内存,如上(4444,5551,565依据对透明度的不同要求做不同选择)~

RGBA_888 每像素占用3字节,不包含透明度的图片用这种像素格式是最优的。

PVRTC_4,PVRTC_2 每像素占4bit,2bit,效果还是相当不错的,不过占用的内存将为8888的16分之1。

不过,耗用如此低,对像素质量也不要报太高期望了。


解题,主要修改 CCTexturePVR.m -unpackPVRData:PVRLen: 方法:

在方法末 return success;这句代码之前添加如下代码:

NSLog(@"width=%d, height=%d, formatFlags=0x%2x",width_, height_, formatFlags);

GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Fri Sep 16 06:56:50 UTC 2011)Copyright 2004 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute copies of it under certain conditions.Type "show copying" to see the conditions.There is absolutely no warranty for GDB.  Type "show warranty" for details.This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys000target remote-mobile /tmp/.XcodeGDBRemote-280-57Switching to remote-macosx protocolmem 0x1000 0x3fffffff cachemem 0x40000000 0xffffffff nonemem 0x00000000 0x0fff none[Switching to process 7171 thread 0x1c03][Switching to process 7171 thread 0x1c03]sharedlibrary apply-load-rules all2012-04-21 14:18:12.659 GameSceneEx[78875:707] width=1024, height=1024, formatFlags=0x192012-04-21 14:18:12.706 GameSceneEx[78875:707] width=512, height=1024, formatFlags=0x102012-04-21 14:18:12.863 GameSceneEx[78875:707] width=512, height=1024, formatFlags=0x10
如上控制台输出表示加载了3张pvr图片

第一张是 PVRTC4,第二、三张是 RGBA4444。



           

猜你喜欢

转载自blog.csdn.net/qq_44894420/article/details/89437636