OpenGL Image ( GLI ) es una biblioteca de imágenes C++ de solo encabezado para software de gráficos.
GLI proporciona clases y funciones para cargar archivos de imágenes ( KTX y DDS ), facilitar la creación de texturas de API de gráficos, comparar texturas, acceder a texturas de textura, muestrear texturas, convertir texturas, generar mapas mip, etc.
Esta biblioteca funciona perfectamente con OpenGL o Vulkan pero también garantiza la interoperabilidad con otras bibliotecas y SDK de terceros. Es un buen candidato para renderizado de software (trazado de rayos/rasterización), procesamiento de imágenes, pruebas de software basadas en imágenes o cualquier contexto de desarrollo que requiera una biblioteca de imágenes simple y conveniente.
GLI está escrito en C++11. Es una biblioteca independiente de la plataforma sin dependencia y admite los siguientes compiladores:
- Apple Clang 6.0 y superior
- GCC 4.7 y superior
- Intel C++ Composer XE 2013 y superior
- LLVM 3.4 y superior
- Visual C++ 2013 y superior
- Cualquier compilador de C++11
Para obtener más información sobre GLI , consulte el manual y la documentación de referencia de API. El código fuente y la documentación están bajo la licencia Happy Bunny (MIT modificada) o la licencia MIT.
Gracias por contribuir al proyecto enviando solicitudes de extracción.
# 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;
}
Última versión
Salud del proyecto
Servicio | Sistema | Compilador | Estado |
---|
Travis CI | Linux 64 bits | Sonido metálico 3.9, Sonido metálico 7, Sonido metálico 9, Sonido metálico 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
AppVeyor | ventanas 32 y 64 | Estudio visual 2013 | |
Notas de la versión
GLI 0.8.3.0 - 2017-XX-XX
Características:
- Se agregó descompresión y muestreo de DXT1, DXT3, DXT5, ATI1N y ATI2N #110 #119
- Consultas añadidas en formato de plantilla y profundidad #119
- Se agregó textura_grad a las muestras.
Correcciones:
GLI 0.8.2.0 - 2016-11-13
Características:
- Extender flip() para texturas comprimidas S3TC #94
- Consultas de propiedades de formato agregadas #102
Mejoras:
- Operador de textura fija =
- Manual inicial agregado
Correcciones:
- Se corrigieron los parámetros de swizzle de ATI2N #121
GLI 0.8.1.1 - 2016-09-11
Mejoras:
- GLM actualizado a la versión 0.9.8.0
Correcciones:
- Se corrigió el guardado de mapas de cubos KTX.
- Textura fija::construcción clara
GLI 0.8.1.0 - 2016-03-16
Características:
- Copia de textura agregada, sin asignación involucrada, solo transferencia
- Copia de subimagen agregada
- Añadido claro no miembro
- Se agregaron funciones auxiliares make_texture*
Mejoras:
- Se agregó soporte para texturas npot comprimidas #73
- Se agregó caché de acceso a imágenes a texturas genéricas.
- Se agregó traducción del formato alfa de luminancia a OpenGL 3.3+ a través de RG swizzling. #93
- Rendimiento mejorado al muestrear usando mapas mip
- Filtro más cercano mejorado sin borde usando el rendimiento de Texture_lod (~2,5 veces más rápido con Texture2D)
- Textura mejorada::data() (~18x con matriz cúbica, ~68x con 2D)
- Textura mejorada::tamaño() (~3,1x con matriz de cubos, ~3,9x con 2D)
- Llamadas simultáneas mejoradas a textura::tamaño() y textura::extensión() (~2.1x con matriz cúbica, ~2.3x con 2D)
Correcciones:
- Se corrigió el guardado DX10 DDS de texturas 3D #91
- Se corrigió la traducción de BGRX con PROFILE_GL33 perfil #92
- Se corrigió la carga DDS9 de la textura 3D detectada como textura 2D #93
GLI 0.8.0.0 - 2016-02-16
Características:
- Se agregó soporte para swizzle de textura #79
- Se agregó soporte para swizzle de memoria de texturas.
- Se agregó conversión de textura de cualquier formato sin comprimir a cualquier formato sin comprimir.
- Carga de textura agregada
- Se agregó generación de mapas MIP de textura para formatos sin comprimir.
- Soporte agregado para carga y almacenamiento.
- Se agregó soporte para muchos formatos nuevos.
- Se agregó un mapa de muestra 1D, 2D, 3D, de matriz y de cubo.
- Se agregó muestra de búsqueda de texel y escritura de texel.
- Muestra agregada clara
- Se agregó un algoritmo de transformación para calcular la aritmética entre texels.
- Se agregó un algoritmo de reducción para comparar todos los texels dentro de una imagen.
Mejoras:
- Formatos reordenados para que coincidan con los formatos de Vulkan
- Traducción OpenGL mejorada para múltiples perfiles: KTX, ES2.0, ES3.0, GL3.2 y GL3.3
- Documentación mejorada de Doxygen
Correcciones:
- Se corrigió el soporte de PVRTC2.
- Se corrigió la luminancia y la traducción alfa a OpenGL #56.
- Se corrigió el soporte DXGI_FORMAT_B8G8R8X8_UNORM_SRGB #59
- Se corrigió la carga de FORMAT_RGBA8_UNORM DDS usando el modo DDPF_RGBA #60
- Manejo fijo de DDS DDPF_ALPHAPIXELS #68
- Imágenes fijas, nombres y formatos que coinciden mejor #78 #81 #80
- Se corrigieron los archivos BC4U y BC5U generados desde el cargador MS DDS #82
Trabajo en progreso:
- Se agregó soporte para contenedores KMG y propuesta de especificaciones.
GLI 0.7.0.0 - 2015-09-01
- Se agregó carga y guardado de KTX.
- Se agregó gli::load para cargar archivos genéricos, ya sean archivos DDS o KTX dependiendo de las extensiones de nombre de archivo.
- Se agregó gli::save para guardar archivos genéricos, ya sean archivos DDS o KTX dependiendo de las extensiones de nombre de archivo.
- Se agregaron vistas de textura usando diferentes formatos de textura, incluidos formatos de textura comprimidos.
- La granularidad fina agregada incluye
- Documentación API mejorada
- Las comparaciones de texturas mucho más rápidas no son casos óptimos. (Medido ~21 veces más rápido en Intel IVB)
- Manejo explícito de objetivos de textura: se corrigieron varios casos de mapas de cubos y matrices de texturas que no se cargaban con DDS
- Se corrigió la compilación de GCC
- Advertencias fijas
- Se corrigió el tamaño del encabezado DDS guardado en el n.° 52
GLI 0.6.1.1 - 2015-07-18
- Documentación API actualizada
- Error de enlace fijo
GLI 0.6.1.0 - 2015-07-18
- Se corrigieron las inconsistencias de la interfaz.
- Rendimiento mejorado de clear(), data() y size() mediante el almacenamiento en caché
- Se eliminó la dependencia interna de std::fstream
- Se agregó soporte FORMAT_BGRX8_UNORM y FORMAT_BGRX8_SRGB #48, #43
- Carga FORMAT_RGB8_UNORM mejorada
GLI 0.6.0.0 - 2015-06-28
- Gran refactorización
- Se agregó carga de DDS desde la memoria.
- Se agregó guardar DDS en la memoria.
- Cobertura DDS mejorada para formatos R, RG, RGB y RGBA
- Se agregó soporte DDS ASTC, PVRTC, ATC y ETC.
- Se agregó soporte DDS alfa, luminancia y luminancia alfa
- Se agregaron formatos PVRTC2, ETC2 y EAC.
GLI 0.5.1.1 - 2014-01-20
- Se corrigió el canal RGB parpadeante al leer un DDS.
- Se corrigió el error de enlace getMask*
GLI 0.5.1.0 - 2014-01-18
- Función de giro agregada
- Función level_count agregada
- Se corrigió la interacción con std::map (#33)
- Se agregaron funciones texelFetch y texelWrite.
GLI 0.5.0.0 - 2013-11-24
- Esencialmente una reescritura de la biblioteca.
- Se agregaron copias explícitas
- Se agregó una asignación de memoria única por almacenamiento de textura.
- Vistas de textura agregadas
- Copias de textura agregadas
- Operadores de comparación agregados
- Añadido claro
GLI 0.4.1.0: 2013-03-10
- Ahorro DDS agregado
- Se corrigió la compilación de GCC
- Se corrigió la compilación de XCode
GLI 0.4.0.0: 2013-01-28
- Gran refactorización de API
- Mejoras de rendimiento en la carga: 50 veces en depuración y 50 % en versión de lanzamiento
- Textura 2DArray agregada
- Se agregaron texturaCube y texturaCubeArray.
- Textura 3D agregada
- Se agregaron textura1D y textura1DArray.
- Soporte de carga DDS mejorado
GLI 0.3.0.3: 2011-04-05
GLI 0.3.0.2: 2011-02-08
GLI 0.3.0.1: 2010-10-15
GLI 0.3.0.0: 2010-10-01
- Se agregó carga y almacenamiento DDS10 (BC1 - BC7)
- Sistema de extensión agregado
- Se agregó la creación automática de objetos de textura OpenGL a partir de un archivo.
GLI 0.2.2.0: 2010-09-07
GLI 0.2.1.1: 2010-05-12
- Se corrigió la compilación de GCC
GLI 0.2.1.0: 2010-02-15
- Función texelWrite agregada
- Se corrigieron las advertencias de Visual Studio 2010.
- Se agregaron readme.txt y copying.txt.
GLI 0.2.0.0: 2010-01-10
- API actualizada
- Se eliminó la dependencia de Boost
GLI 0.1.1.0: 2009-09-18
- Cargador DDS fijo
- Se agregó RGB8 al cargador DDS.
- Operación de swizzle de componente agregada
- Se agregó soporte para componentes enteros de 32 bits.
- Recuperación de texto fija
GLI 0.1.0.0: 2009-03-28
- Cargador TGA agregado
- Cargador DDS agregado
- Se agregó duplicado, recorte, copia parcial.
- Se agregó generación de mapas mip.