OpenGL纹理压缩

简介

PC端使用glTexImage2D接口。GLES平台使用glCompressedTexImage2D接口。

PC端使用压缩

  1. 基本示例
GLenum format         = GL_RGBA;
GLint  internalformat = GL_COMPRESSED_RGBA;
glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, internalformat, mat.cols, mat.rows, 0, format, GL_UNSIGNED_BYTE, mat.data);
glGenerateMipmap(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  1. 读取压缩信息
GLint flag; 
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED, &flag); 
printf("compress flag : %d\n", flag); 
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &flag); 
printf("compress format : 0x%X\n", flag); 
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &flag); 
printf("compress size : %d\n", flag);

参考

  • OpenGL glCompressedTexImage2D
  • PVR File Format Specification HeaderFormat
  • OpenGL 函数 glCompressedTexImage2D 压缩纹理
  • OpenGL ES 压缩纹理
  • 你所需要了解的几种纹理压缩格式原理

你可能感兴趣的:(OpenGL,opengl)