Android 使用压缩纹理( 四 )


CompressedTextureInfo textureInfo = etc1::ParseETC1Texture(input_data);if (!textureInfo.is_valid) {    LogE("LoadTexture: etc1 textureInfo parsed invalid.");}GLuint texture_id = 0;glGenTextures(1, &texture_id);glBindTexture(GL_TEXTURE_2D, texture_id);glCompressedTexImage2D(GL_TEXTURE_2D,                       0,                       textureInfo.internal_format,                       textureInfo.width,                       textureInfo.height,                       0,                       textureInfo.size,                       textureInfo.data);四、总结压缩纹理的加载,主要是搞清楚如何解析压缩纹理数据 。一般而言,压缩纹理加载到内存后,都有一个 Header,通过 Header 可以解析出其宽高等信息,计算出纹理图像大小 。最后调用glCompressedTexImage2D方法即可渲染 。可见压缩纹理完全没有图像的解码工作,大大提升加载速度 。
最后 , 介绍几款纹理压缩工具:

  • etc2comp:支持生成etc2纹理
  • etc1tool:支持生成etc1纹理,在Android SDK目录下,Android/sdk/platform-tools/etc1tool
  • ISPCTextureCompressor:支持etc1、astc等
  • astc-encoder:ASTC官方编码器

推荐阅读