27/03/2009 - 18/01/2014 OpenGL Image (GLI)

GLI is a simple C++ image library based on OpenGL and GLSL convensions and used to load and store OpenGL textures.

GLI supports DDS (Direct3D9 and Direct3D10) file formats including all BC1 to BC7 formats but don't compressed image data to these formats (yet).

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());
  • }
  • }
Copyright Christophe Riccio 2002-2013 all rights reserved
Designed for Chrome 9, Firefox 4, Opera 11 and Safari 5