GLM GLI
0.8.0 0.7.0 0.6.1 0.6.0

Code samples

Create a texture with GLI 0.4 and save it to a DDS file:
  • #include <glm/glm.hpp>
  • #include <gli/gli.hpp>
  • // Allocated a 32 bits texture with one mipmap level
  • gli::texture2D Texture(1, gli::RGBA8_UNORM, gli::texture2D::dimensions_type(256, 256));
  • glm::u8vec4 * LinearAddress = Texture.data<glm::u8vec4>();
  • ...
  • // Do something
  • ...
  • gli::saveStorageDDS(Texture, "texture.dds");
Create an OpenGL 4.2 texture with GLI 0.4:
  • #include <gli/gli.hpp>
  • //
  • gli::texture2D Texture(gli::loadStorageDDS("kueken2.dds"));
  • assert(!Texture.empty());
  • glBindTexture(GL_TEXTURE_2D, TextureName);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, GLint(Texture.levels() - 1));
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_RED);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_GREEN);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_BLUE);
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ALPHA);
  • glTexStorage2D(GL_TEXTURE_2D,
  • GLint(Texture.levels()),
  • GLenum(gli::internal_format(Texture.format())),
  • GLsizei(Texture.dimensions().x),
  • GLsizei(Texture.dimensions().y));
  • if(gli::is_compressed(Texture.format()))
  • {
  • for(gli::texture2D::size_type Level = 0; Level < Texture.levels(); ++Level)
  • {
  • glCompressedTexSubImage2D(GL_TEXTURE_2D,
  • GLint(Level),
  • 0, 0,
  • GLsizei(Texture[Level].dimensions().x),
  • GLsizei(Texture[Level].dimensions().y),
  • GLenum(gli::internal_format(Texture.format())),
  • GLsizei(Texture[Level].size()),
  • Texture[Level].data());
  • }
  • }
  • else
  • {
  • for(gli::texture2D::size_type Level = 0; Level < Texture.levels(); ++Level)
  • {
  • glTexSubImage2D(GL_TEXTURE_2D,
  • GLint(Level),
  • 0, 0,
  • GLsizei(Texture[Level].dimensions().x),
  • GLsizei(Texture[Level].dimensions().y),
  • GLenum(gli::external_format(Texture.format())),
  • GLenum(gli::type_format(Texture.format())),
  • Texture[Level].data());
  • }
  • }