OpenGL Image ( GLI ) est une bibliothèque d'images C++ d'en-tête uniquement pour les logiciels graphiques.
GLI fournit des classes et des fonctions pour charger des fichiers image ( KTX et DDS ), faciliter la création de textures par API graphique, comparer des textures, accéder aux texels de texture, échantillonner des textures, convertir des textures, générer des mipmaps, etc.
Cette bibliothèque fonctionne parfaitement avec OpenGL ou Vulkan mais elle assure également l'interopérabilité avec d'autres bibliothèques tierces et SDK. C'est un bon candidat pour le rendu logiciel (raytracing/rastérisation), le traitement d'images, les tests logiciels basés sur des images ou tout contexte de développement nécessitant une bibliothèque d'images simple et pratique.
GLI est écrit en C++11. Il s'agit d'une bibliothèque indépendante de la plate-forme, sans dépendance, et elle prend en charge les compilateurs suivants :
- Apple Clang 6.0 et supérieur
- GCC 4.7 et supérieur
- Intel C++ Composer XE 2013 et versions ultérieures
- LLVM 3.4 et supérieur
- Visual C++ 2013 et supérieur
- N'importe quel compilateur C++11
Pour plus d'informations sur GLI , veuillez consulter le manuel et la documentation de référence de l'API. Le code source et la documentation sont sous licence Happy Bunny (Modified MIT) ou MIT License.
Merci d'avoir contribué au projet en soumettant des demandes de tirage.
# 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;
}
Dernière version
Santé du projet
Service | Système | Compilateur | Statut |
---|
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 | Windows 32 et 64 | Visual Studio 2013 | |
Notes de version
GLI 0.8.3.0 - 2017-XX-XX
Caractéristiques:
- Ajout de la décompression et de l'échantillonnage de DXT1, DXT3, DXT5, ATI1N et ATI2N #110 #119
- Ajout de requêtes de profondeur et de format de pochoir #119
- Ajout de texture_grad aux échantillonneurs
Correctifs :
- Correction du R8 SRGB #120
GLI 0.8.2.0 - 2016-11-13
Caractéristiques:
- Étendre flip() pour les textures compressées S3TC #94
- Requêtes de propriétés de format ajoutées #102
Améliorations :
- Opérateur de texture fixe =
- Ajout du manuel initial
Correctifs :
- Correction des paramètres de swizzle ATI2N #121
GLI 0.8.1.1 - 2016-09-11
Améliorations :
- GLM mis à jour vers la version 0.9.8.0
Correctifs :
- Correction de la sauvegarde des cartes de cube KTX
- Texture fixe :: construction claire
GLI 0.8.1.0 - 2016-03-16
Caractéristiques:
- Copie de texture ajoutée, aucune allocation impliquée, uniquement le transfert
- Copie de sous-image ajoutée
- Ajout d'un non-membre clair
- Ajout des fonctions d'assistance make_texture*
Améliorations :
- Ajout du support des textures npot compressées #73
- Ajout du cache d'accès aux images aux textures génériques
- Ajout de la traduction du format alpha de luminance vers OpenGL 3.3+ via RG swizzling. #93
- Performances améliorées lors de l'échantillonnage à l'aide de mipmaps
- Filtre le plus proche amélioré sans bordure grâce aux performances de texture_lod (~ 2,5 fois plus rapide avec texture2d)
- Texture::data() améliorée (~18x avec un tableau de cubes, ~68x avec la 2D)
- Texture::size() améliorée (~3,1x avec un tableau de cubes, ~3,9x avec la 2D)
- Amélioration des appels simultanés texture::size() et texture::extent() (~2,1x avec un tableau de cubes, ~2,3x avec la 2D)
Correctifs :
- Correction de la sauvegarde DX10 DDS des textures 3D #91
- Correction de la traduction BGRX avec le profil PROFILE_GL33 #92
- Correction du chargement DDS9 de la texture 3D détecté comme texture 2D #93
GLI 0.8.0.0 - 2016-02-16
Caractéristiques:
- Ajout du support de texture Swizzle #79
- Ajout de la prise en charge du tourbillon de mémoire de texture
- Ajout de la conversion de texture de n'importe quel format non compressé vers n'importe quel format non compressé
- Lod de texture ajouté
- Ajout de la génération de mipmaps de texture pour les formats non compressés
- Ajout de la prise en charge du chargement et du stockage
- Ajout de la prise en charge de nombreux nouveaux formats
- Ajout d'un échantillonneur 1D, 2D, 3D, d'un tableau et d'une carte de cube
- Ajout de la récupération de texel de l'échantillonneur et de l'écriture de texel
- Ajout de l'effacement de l'échantillonneur
- Ajout d'un algorithme de transformation pour calculer l'arithmétique entre les texels
- Ajout d'un algorithme de réduction pour comparer tous les texels dans une image
Améliorations :
- Formats réorganisés pour correspondre aux formats Vulkan
- Traduction OpenGL améliorée pour plusieurs profils : KTX, ES2.0, ES3.0, GL3.2 et GL3.3
- Documentation Doxygen améliorée
Correctifs :
- Prise en charge PVRTC2 fixe
- Luminance fixe et traduction alpha vers OpenGL #56
- Correction de la prise en charge de DXGI_FORMAT_B8G8R8X8_UNORM_SRGB #59
- Correction du chargement DDS FORMAT_RGBA8_UNORM en utilisant le mode DDPF_RGBA #60
- Correction de la gestion du DDS DDPF_ALPHAPIXELS #68
- Images fixes, noms et formats mieux adaptés #78 #81 #80
- Correction des fichiers BC4U et BC5U générés à partir du chargeur MS DDS #82
Travaux en cours :
- Ajout de la prise en charge des conteneurs KMG et d'une proposition de spécifications
GLI 0.7.0.0 - 01/09/2015
- Ajout du chargement et de la sauvegarde de KTX
- Ajout de gli::load pour le chargement de fichiers génériques, fichiers DDS ou KTX selon les extensions de nom de fichier
- Ajout de gli::save pour l'enregistrement de fichiers génériques, fichiers DDS ou KTX en fonction des extensions de nom de fichier
- Ajout de vues de texture utilisant différents formats de texture, y compris les formats de texture compressés
- La granularité fine ajoutée inclut
- Documentation API améliorée
- Des comparaisons de textures beaucoup plus rapides ne sont pas des cas optimaux. (Mesuré ~ 21 fois plus rapide sur Intel IVB)
- Gestion explicite des cibles de texture : correction de divers cas d'échec du chargement de cubesmap et de tableaux de textures avec DDS
- Correction de la version GCC
- Avertissements corrigés
- Correction de la taille de l'en-tête DDS enregistré sur #52
GLI 0.6.1.1 - 2015-07-18
- Documentation API mise à jour
- Erreur de lien corrigée
GLI 0.6.1.0 - 2015-07-18
- Correction d'incohérences d'interface
- Amélioration des performances de clear(), data() et size() grâce à la mise en cache
- Suppression de la dépendance interne à std :: fstream
- Ajout de la prise en charge de FORMAT_BGRX8_UNORM et FORMAT_BGRX8_SRGB #48, #43
- Chargement amélioré de FORMAT_RGB8_UNORM
GLI 0.6.0.0 - 2015-06-28
- Grande refactorisation
- Ajout du chargement du DDS depuis la mémoire
- Ajout de l'enregistrement du DDS en mémoire
- Couverture DDS améliorée pour les formats R, RG, RVB et RGBA
- Ajout du support DDS ASTC, PVRTC, ATC et ETC
- Ajout du support DDS alpha, luminance et alpha luminance
- Ajout des formats PVRTC2, ETC2 et EAC
GLI 0.5.1.1 - 20/01/2014
- Correction du canal RVB tourbillonnant lors de la lecture d'un DDS
- Correction d'une erreur de lien getMask*
GLI 0.5.1.0 - 2014-01-18
- Fonction de retournement ajoutée
- Fonction level_count ajoutée
- Interaction fixe avec std::map (#33)
- Ajout des fonctions texelFetch et texelWrite
GLI 0.5.0.0 - 2013-11-24
- Essentiellement une réécriture de la bibliothèque
- Ajout de copies explicites
- Ajout d'une allocation de mémoire unique par stockage de texture
- Vues de texture ajoutées
- Copies de texture ajoutées
- Opérateurs de comparaison ajoutés
- Ajouté clair
GLI 0.4.1.0 : 2013-03-10
- Ajout de la sauvegarde DDS
- Correction de la version GCC
- Correction de la version XCode
GLI 0.4.0.0 : 2013-01-28
- Refactorisation d'API à grande échelle
- Améliorations des performances au chargement : 50x en débogage et 50 % en version release
- Texture2DArray ajoutée
- Ajout de textureCube et textureCubeArray
- Texture3D ajoutée
- Ajout de texture1D et texture1DArray
- Prise en charge améliorée du chargement DDS
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
- Ajout du chargement et du stockage DDS10 (BC1 - BC7)
- Système d'extension ajouté
- Ajout de la création automatique d'objets de texture OpenGL à partir d'un fichier
GLI 0.2.2.0 : 2010-09-07
GLI 0.2.1.1 : 2010-05-12
- Correction de la version GCC
GLI 0.2.1.0 : 2010-02-15
- Fonction texelWrite ajoutée
- Correction des avertissements de Visual Studio 2010
- Ajout des fichiers readme.txt et copying.txt
GLI 0.2.0.0 : 2010-01-10
- API mise à jour
- Dépendance Boost supprimée
GLI 0.1.1.0 : 2009-09-18
- Chargeur DDS fixe
- Ajout de RGB8 au chargeur DDS
- Ajout de l'opération Swizzle des composants
- Ajout de la prise en charge des composants entiers 32 bits
- Correction de la récupération de texel
GLI 0.1.0.0 : 2009-03-28
- Ajout du chargeur TGA
- Chargeur DDS ajouté
- Ajout du doublon, du recadrage, de la copie partielle
- Ajout de la génération de mipmaps.