Cocos2d-x 是否支持 ETC2 纹理?
Does Cocos2d-x support ETC2 textures?
我正在制作游戏,目前支持以下纹理格式:
- 空中交通管制
- DXT
- PNG
- PVR
我想添加对 ETC2 的支持(ETC1 对我们不起作用,因为我们的大多数图形都需要 alpha 通道)。 Cocos2d-x 是否支持 ETC2 纹理?
没有
但是有两件事。
Cocos2d-x 在 CCTexture2D.h 中没有 ETC2 定义。你需要自己添加ETC2定义。
- https://github.com/cocos2d/cocos2d-x/blob/v4-develop/cocos/renderer/CCTexture2D.h#L95-L96
https://github.com/cocos2d/cocos2d-x/blob/v4-develop/cocos/renderer/CCTexture2D.cpp#L60-L110
//! 2-bit PVRTC-compressed texture: PVRTC2 (has alpha channel)
PVRTC2A,
//! ETC-compressed texture: ETC
ETC,
//! S3TC-compressed texture: S3TC_Dxt1
S3TC_DXT1,
并且 Cocos2d-x 至少在 Android 上使用 OpenGL ES 2.0 上下文。
this.setEGLContextClientVersion(2);
因此将 ETC2 用于 glCompressedTexImage2D 需要这些扩展。
OES_compressed_ETC2_RGB8_texture
OES_compressed_ETC2_sRGB8_texture
OES_compressed_ETC2_punchthroughA_RGBA8_texture
OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
OES_compressed_ETC2_RGBA8_texture
OES_compressed_ETC2_sRGB8_alpha8_texture
我正在制作游戏,目前支持以下纹理格式:
- 空中交通管制
- DXT
- PNG
- PVR
我想添加对 ETC2 的支持(ETC1 对我们不起作用,因为我们的大多数图形都需要 alpha 通道)。 Cocos2d-x 是否支持 ETC2 纹理?
没有
但是有两件事。
Cocos2d-x 在 CCTexture2D.h 中没有 ETC2 定义。你需要自己添加ETC2定义。
- https://github.com/cocos2d/cocos2d-x/blob/v4-develop/cocos/renderer/CCTexture2D.h#L95-L96
https://github.com/cocos2d/cocos2d-x/blob/v4-develop/cocos/renderer/CCTexture2D.cpp#L60-L110
//! 2-bit PVRTC-compressed texture: PVRTC2 (has alpha channel) PVRTC2A, //! ETC-compressed texture: ETC ETC, //! S3TC-compressed texture: S3TC_Dxt1 S3TC_DXT1,
并且 Cocos2d-x 至少在 Android 上使用 OpenGL ES 2.0 上下文。
this.setEGLContextClientVersion(2);
因此将 ETC2 用于 glCompressedTexImage2D 需要这些扩展。
OES_compressed_ETC2_RGB8_texture
OES_compressed_ETC2_sRGB8_texture
OES_compressed_ETC2_punchthroughA_RGBA8_texture
OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture
OES_compressed_ETC2_RGBA8_texture
OES_compressed_ETC2_sRGB8_alpha8_texture