cocos2d-x:如何为特定的Texture2D指定像素格式

时间:2014-06-01 06:32:16

标签: cocos2d-x cocos2d-x-3.0

我将我的应用程序设置为默认使用RGBA4444像素格式作为其Texture2D对象。

Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444);

这很好用 - 它将我的内存占用减少了一半,16位仍然看起来很适合大多数图像。然而,一些图像有点混乱......即主要是一种颜色的图像,例如使用相当多绿色阴影的特定草背景纹理。在低于32位的任何东西中它看起来都非常可怕,而且我宁愿不必创建一个16位时看起来更好的纹理。

32 bit on the left, 16 bit on the right

对我来说最好的解决方案是能够将精灵设置为使用RGBA8888作为例外。毕竟,'setDefaultAlphaPixelFormat()'暗示它可以另外指定,对吧?但我一直无法找到方法。

可以吗?

1 个答案:

答案 0 :(得分:4)

解决方案是在加载之前更改默认格式,然后再将其重新设置。我就这样做了:

Texture2D::PixelFormat defaultFormat = Texture2D::getDefaultAlphaPixelFormat();
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888);

// Load RGBA8888 textures here
TextureCache::getInstance()->addImage(IMAGE_BACKGROUND_GRASS);

Texture2D::setDefaultAlphaPixelFormat(defaultFormat);

我认为这很好,感谢LearnCocos2D。 :)