OpenGL Image ( GLI ) é uma biblioteca de imagens C++ apenas de cabeçalho para software gráfico.
GLI fornece classes e funções para carregar arquivos de imagem ( KTX e DDS ), facilitar a criação de texturas de APIs gráficas, comparar texturas, acessar texels de textura, amostrar texturas, converter texturas, gerar mipmaps, etc.
Esta biblioteca funciona perfeitamente com OpenGL ou Vulkan , mas também garante interoperabilidade com outras bibliotecas de terceiros e SDK. É um bom candidato para renderização de software (raytracing/rasterização), processamento de imagens, testes de software baseados em imagens ou qualquer contexto de desenvolvimento que requeira uma biblioteca de imagens simples e conveniente.
GLI é escrito em C++11. É uma biblioteca independente de plataforma sem dependência e suporta os seguintes compiladores:
- Apple Clang 6.0 e superior
- GCC 4.7 e superior
- Intel C++ Composer XE 2013 e superior
- LLVM 3.4 e superior
- Visual C++ 2013 e superior
- Qualquer compilador C++ 11
Para obter mais informações sobre GLI , consulte o manual e a documentação de referência da API. O código-fonte e a documentação são licenciados sob a Licença Happy Bunny (MIT Modificada) ou a Licença MIT.
Obrigado por contribuir com o projeto enviando solicitações pull.
# include < gli/gli.hpp >
GLuint CreateTexture ( char const * Filename)
{
gli::texture Texture = gli::load (Filename);
if (Texture. empty ())
return 0 ;
gli::gl GL (gli::gl::PROFILE_GL33);
gli::gl::format const Format = GL. translate (Texture. format (), Texture. swizzles ());
GLenum Target = GL. translate (Texture. target ());
assert ( gli::is_compressed (Texture. format ()) && Target == gli::TARGET_2D);
GLuint TextureName = 0 ;
glGenTextures ( 1 , &TextureName);
glBindTexture (Target, TextureName);
glTexParameteri (Target, GL_TEXTURE_BASE_LEVEL, 0 );
glTexParameteri (Target, GL_TEXTURE_MAX_LEVEL, static_cast <GLint>(Texture. levels () - 1 ));
glTexParameteriv (Target, GL_TEXTURE_SWIZZLE_RGBA, &Format. Swizzles [ 0 ]);
glTexStorage2D (Target, static_cast <GLint>(Texture. levels ()), Format. Internal , Extent. x , Extent. y );
for (std:: size_t Level = 0 ; Level < Texture. levels (); ++Level)
{
glm::tvec3<GLsizei> Extent (Texture. extent (Level));
glCompressedTexSubImage2D (
Target, static_cast <GLint>(Level), 0 , 0 , Extent. x , Extent. y ,
Format. Internal , static_cast <GLsizei>(Texture. size (Level)), Texture. data ( 0 , 0 , Level));
}
return TextureName;
}
Último lançamento
Saúde do Projeto
Serviço | Sistema | Compilador | Status |
---|
Travis CI | Linux 64 bits | Clang 3.9, Clang 7, Clang 9, Clang 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
AppVeyor | Janelas 32 e 64 | Visual Studio 2013 | |
Notas de lançamento
GLI 0.8.3.0 - 2017-XX-XX
Características:
- Adicionada descompressão e amostragem de DXT1, DXT3, DXT5, ATI1N e ATI2N #110 #119
- Adicionadas consultas de profundidade e formato de estêncil #119
- Adicionado Texture_grad aos samplers
Correções:
GLI 0.8.2.0 - 13/11/2016
Características:
- Estenda flip() para texturas compactadas S3TC #94
- Adicionadas consultas de propriedade de formato #102
Melhorias:
- Operador de textura fixa =
- Adicionado manual inicial
Correções:
- Parâmetros swizzle ATI2N #121 corrigidos
GLI 0.8.1.1 - 11/09/2016
Melhorias:
- GLM atualizado para a versão 0.9.8.0
Correções:
- Corrigido o salvamento de mapas de cubo KTX
- Textura corrigida::compilação clara
GLI 0.8.1.0 - 16/03/2016
Características:
- Adicionada cópia de textura, sem alocação envolvida, apenas transferência
- Adicionada cópia de subimagem
- Adicionado cancelamento de não-membro
- Adicionadas funções auxiliares make_texture*
Melhorias:
- Adicionado suporte a texturas npot compactadas #73
- Adicionado cache de acesso de imagem para texturas genéricas
- Adicionada tradução do formato alfa de luminância para OpenGL 3.3+ por meio de swizzling RG. #93
- Melhor desempenho ao amostrar usando mipmaps
- Filtro mais próximo sem borda aprimorado usando desempenho de Texture_lod (~2,5x mais rápido com Texture2d)
- Texture::data() melhorado (~18x com matriz de cubo, ~68x com 2D)
- Texture::size() melhorado (~3,1x com matriz de cubo, ~3,9x com 2D)
- Chamadas simultâneas de textura::size() e textura::extent() aprimoradas (~2,1x com matriz de cubo, ~2,3x com 2D)
Correções:
- Corrigido o salvamento DX10 DDS de texturas 3D #91
- Tradução BGRX corrigida com perfil PROFILE_GL33 #92
- Corrigido o carregamento DDS9 de textura 3D detectada como textura 2D #93
GLI 0.8.0.0 - 16/02/2016
Características:
- Adicionado suporte para swizzle de textura #79
- Adicionado suporte para swizzle de memória de textura
- Adicionada conversão de textura de qualquer formato não compactado para qualquer formato não compactado
- Adicionado lod de textura
- Adicionada geração de mipmaps de textura para formatos não compactados
- Adicionado suporte para carregar e armazenar
- Adicionado suporte para muitos novos formatos
- Adicionado amostrador 1D, 2D, 3D, matriz e mapa de cubo
- Adicionado amostrador de busca de texel e gravação de texel
- Adicionado amostrador claro
- Adicionado algoritmo de transformação para calcular aritmética entre texels
- Adicionado algoritmo de redução para comparar todos os texels dentro de uma imagem
Melhorias:
- Formatos reordenados para corresponder aos formatos Vulkan
- Tradução OpenGL aprimorada para vários perfis: KTX, ES2.0, ES3.0, GL3.2 e GL3.3
- Documentação Doxygen aprimorada
Correções:
- Suporte PVRTC2 fixo
- Corrigida a luminância e a tradução alfa para OpenGL #56
- Corrigido suporte DXGI_FORMAT_B8G8R8X8_UNORM_SRGB #59
- Corrigido o carregamento de FORMAT_RGBA8_UNORM DDS usando o modo DDPF_RGBA #60
- Manipulação corrigida de DDS DDPF_ALPHAPIXELS #68
- Imagens corrigidas, melhor correspondência de nomes e formatos #78 #81 #80
- Arquivos BC4U e BC5U corrigidos gerados a partir do carregador MS DDS #82
Trabalho em andamento:
- Adicionado suporte ao contêiner KMG e proposta de especificações
GLI 0.7.0.0 - 01/09/2015
- Adicionado carregamento e salvamento de KTX
- Adicionado gli::load para carregamento de arquivos genéricos, arquivos DDS ou KTX dependendo das extensões de nome de arquivo
- Adicionado gli::save para salvar arquivos genéricos, arquivos DDS ou KTX dependendo das extensões de nome de arquivo
- Adicionadas visualizações de textura usando diferentes formatos de textura, incluindo formatos de textura compactados
- A granularidade fina adicionada inclui
- Documentação de API aprimorada
- Comparações de textura muito mais rápidas não são casos ideais. (Medido ~21x mais rápido no Intel IVB)
- Manipulação explícita de alvos de textura: corrigidos vários casos de cubemap e matrizes de textura falhando ao carregar com DDS
- Compilação GCC corrigida
- Avisos corrigidos
- Corrigido o tamanho do cabeçalho DDS salvo no #52
GLI 0.6.1.1 - 18/07/2015
- Documentação atualizada da API
- Erro de link corrigido
GLI 0.6.1.0 - 18/07/2015
- Inconsistências de interface corrigidas
- Melhor desempenho de clear(), data() e size() usando cache
- Removida a dependência interna de std::fstream
- Adicionado suporte a FORMAT_BGRX8_UNORM e FORMAT_BGRX8_SRGB #48, #43
- Carregamento FORMAT_RGB8_UNORM aprimorado
GLI 0.6.0.0 - 28/06/2015
- Grande refatoração
- Adicionado carregamento de DDS da memória
- Adicionado salvamento de DDS na memória
- Cobertura DDS aprimorada para formatos R, RG, RGB e RGBA
- Adicionado suporte DDS ASTC, PVRTC, ATC e ETC
- Adicionado suporte DDS alfa, luminância e luminância alfa
- Adicionados formatos PVRTC2, ETC2 e EAC
GLI 0.5.1.1 - 20/01/2014
- Corrigido canal RGB swizzled ao ler um DDS
- Erro de link getMask* corrigido
GLI 0.5.1.0 - 18/01/2014
- Adicionada função flip
- Adicionada função level_count
- Interação corrigida com std::map (#33)
- Adicionadas funções texelFetch e texelWrite
GLI 0.5.0.0 - 24/11/2013
- Essencialmente, uma reescrita da biblioteca
- Adicionadas cópias explícitas
- Adicionada alocação de memória única por armazenamento de textura
- Adicionadas visualizações de textura
- Adicionadas cópias de textura
- Operadores de comparação adicionados
- Adicionado claro
GLI 0.4.1.0: 10/03/2013
- Adicionado salvamento DDS
- Compilação GCC corrigida
- Compilação XCode corrigida
GLI 0.4.0.0: 28/01/2013
- Refatoração de API grande
- Melhorias de desempenho no carregamento: 50x na depuração e 50% na versão build
- Adicionado textura2DArray
- Adicionados TextureCube e TextureCubeArray
- Adicionada textura3D
- Adicionados textura1D e textura1DArray
- Suporte aprimorado ao carregamento de DDS
GLI 0.3.0.3: 05/04/2011
GLI 0.3.0.2: 08/02/2011
GLI 0.3.0.1: 15/10/2010
GLI 0.3.0.0: 01-10-2010
- Adicionado carregamento e armazenamento DDS10 (BC1 - BC7)
- Sistema de extensão adicionado
- Adicionada criação automática de objetos de textura OpenGL a partir de arquivo
GLI 0.2.2.0: 07/09/2010
- Adicionado exportador DDS
GLI 0.2.1.1: 12/05/2010
GLI 0.2.1.0: 15/02/2010
- Adicionada função texelWrite
- Avisos corrigidos do Visual Studio 2010
- Adicionados readme.txt e copying.txt
GLI 0.2.0.0: 10/01/2010
- API atualizada
- Dependência de Boost removida
GLI 0.1.1.0: 18/09/2009
- Carregador DDS fixo
- Adicionado RGB8 ao carregador DDS
- Adicionada operação de rotação de componentes
- Adicionado suporte a componentes inteiros de 32 bits
- Busca de texel corrigida
GLI 0.1.0.0: 28/03/2009
- Adicionado carregador TGA
- Adicionado carregador DDS
- Adicionado duplicado, corte, cópia parcial
- Adicionada geração de mipmaps.