Thursday, May 28, 2009
Pixel formats in cocos2d v0.7.3+
Thursday, May 28, 2009
[per riq] Since cosos2d v0.7.3, you can specify the texture's pixel format of your PNG/TIFF/BMP/GIF images.
The texture's pixel format is the way the image is stored in GPU memory.
Possible pixel formats:
How to use it:
The texture's pixel format is the way the image is stored in GPU memory.
Possible pixel formats:
- RGBA8888 (32-bit) (kTexture2DPixelFormat_RGBA8888)
- RGBA4444 (16-bit) (kTexture2DPixelFormat_RGBA4444)
- RGB5_A1 (16-bit)(kTexture2DPixelFormat_RGB5A1)
- RGB565 (16-bit) (kTexture2DPixelFormat_RGB565)
- 8 bits are assigned to the red channel, 8 bits to the green channel, 8 bits to the blue channel and 8 bits to the alpha channel.
- Use this pixel format when you need the maximum possible quality for your image.
- But it will consume the double of memory compared to 16-bit textures. Memory is a precious resource on the iPhone
- Usually it is also slower to render.
- Useful for: background image of your intro scene, and for images with lots of gradient colors
- 4 bits are assigned to the red channel, 4 bits to the green channel, 4 bits to the blue channel, and 4 bits to the alpha channel
- It gives you good quality in all channels, good speed, good memory consumption.
- Useful for: sprites that have different values of transparency
- 5 bits are assigned to the red channel, 5 bits to the green channel, 5 bits to the blue channel, and only 1 bit to the alpha channel
- It gives you good quality in RGB channels but poor quality on the A channel. It also gives you good speed and good memory consumption.
- Useful for: sprites that have transparent parts, but the transparency is either On or Off
- 5 bits are assigned to the red channel, 6 bits to the green channel, and 5 bits to the blue channel. It has no alpha channel support
- It gives you the best possible quality for 16-bit textures, but without alpha channel support.
- Useful for: background images in your game.
How to use it:
// Set the pixel format before loading the image
// RGBA 8888 image (32-bit)
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888];
Sprite *sprite1 = [Sprite spriteWithFile:@"test-rgba1.png"];
// Set the pixel format before loading the image
// RGBA 4444 image (16-bit)
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444];
Sprite *sprite2 = [Sprite spriteWithFile:@"test-rgba2.png"];
// Set the pixel format before loading the image
// RGB5A1 image (16-bit)
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGB5A1];
Sprite *sprite3 = [Sprite spriteWithFile:@"test-rgba3.png"];
// Set the pixel format before loading the image
// RGB565 image (16-bit)
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGB565];
Sprite *sprite4 = [Sprite spriteWithFile:@"test-rgba4.png"];
// restore the default pixel format
[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_Default];
Labels: cocos2d, iPhone, pixel format
Comments:
There are currently 0 Comments: