@[Cocos2d|纹理]
###写在前面###
在cocos2d中,纹理与图形渲染有着密不可分的关系。纹理会存储在GPU内存中,纹理的像素格式决定了图片所占用的GPU内存,跟加载的所用的时间没有关系,但可以通过减小PNG/GIF/TIFF/TMP
等图片的大小来缩短加载的时间,也可以将图像格式导出成PVR
格式,IOS设备通常使用PowerVR显示芯片,而PVR
格式的图片可以直接被该显示芯片直接读取,不需要解析直接显示,渲染速度更快,更节省内存,pvr.ccz
图像格式是pvr
的压缩格式,占用空间更小。
我们可能用到像素格式有:
- BGRA8888(32 bit)
32位真彩色,红、绿、蓝、透明通道各8位,占用内存是16位纹理的2倍,整个场景的背景图片、具有大量渐变色的图片可以考虑这个格式
- RGBA8888(32 bit)
同上
- RGB888(24 bit)
24位真彩色,红、绿、蓝通道各8位,没有透明通道
- RGB565(16 bit)
16位,红、蓝通道5位,绿色通道6位,是一个图像质量还不错的16位纹理格式,也可考虑用作游戏中的背景图像
- A8(8 bit)
只有透明通道的8位,用来做遮罩图
- I8(8 bit)
8位,存储灰度信息,用来做灰度图
- AI88(16 bit)
16位,存储透明度和灰度信息
- RGBA4444(16 bit)
- RGB5A1(16 bit)
16位,红、绿、蓝通道各5位,透明通道1位(0/1),所以透明度的表现只有两种,非黑即白
- PVRTC4(4 bit)
- PVRTC4A(4 bit)
- PVRTC2(2 bit)
- PVRTC2A(2 bit)
- ETC
- S3TC_DXT1
- S3TC_DXT3
- S3TC_DXT5
- ATC_RGB
- ATC_EXPLICIT_ALPHA
- ATC_INTERPOLATED_ALPHA
###怎么使用###
Cocos2dX版本:3.0
在载入图像之前设置纹理格式,然后进行精灵实例化操作
1 | Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888); |
当纹理被创建之后,我们就不能再修改纹理的像素格式了,但是我们可以通过CCTextureCache
移除该纹理,就可以重新从同个图片资源用不同的纹理像素格式来创建纹理了。
###相关阅读###