OpenGL Image ( GLI ) ist eine C++-Bildbibliothek nur für Header für Grafiksoftware.
GLI bietet Klassen und Funktionen zum Laden von Bilddateien ( KTX und DDS ), zum Erleichtern der Texturerstellung durch Grafik-APIs, zum Vergleichen von Texturen, zum Zugriff auf Texturtexel, zum Beispiel für Texturen, zum Konvertieren von Texturen, zum Generieren von Mipmaps usw.
Diese Bibliothek funktioniert perfekt mit OpenGL oder Vulkan , gewährleistet aber auch die Interoperabilität mit anderen Bibliotheken und SDKs von Drittanbietern. Es ist ein guter Kandidat für Software-Rendering (Raytracing/Rasterisierung), Bildverarbeitung, bildbasierte Softwaretests oder jeden Entwicklungskontext, der eine einfache und praktische Bildbibliothek erfordert.
GLI ist in C++11 geschrieben. Es ist eine plattformunabhängige Bibliothek ohne Abhängigkeiten und unterstützt die folgenden Compiler:
- Apple Clang 6.0 und höher
- GCC 4.7 und höher
- Intel C++ Composer XE 2013 und höher
- LLVM 3.4 und höher
- Visual C++ 2013 und höher
- Jeder C++11-Compiler
Weitere Informationen zu GLI finden Sie im Handbuch und in der API-Referenzdokumentation. Der Quellcode und die Dokumentation stehen unter der Happy Bunny License (Modified MIT) oder der MIT License.
Vielen Dank für Ihren Beitrag zum Projekt, indem Sie Pull-Anfragen einreichen.
# 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;
}
Letzte Veröffentlichung
Projekt Gesundheit
Service | System | Compiler | Status |
---|
Travis CI | Linux 64 Bit | Clang 3.9, Clang 7, Clang 9, Clang 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
AppVeyor | Windows 32 und 64 | Visual Studio 2013 | |
Versionshinweise
GLI 0.8.3.0 – 2017-XX-XX
Merkmale:
- Dekomprimierung und Sampling von DXT1, DXT3, DXT5, ATI1N und ATI2N #110 #119 hinzugefügt
- Tiefen- und Schablonenformatabfragen Nr. 119 hinzugefügt
- Texture_grad zu Samplern hinzugefügt
Korrekturen:
GLI 0.8.2.0 – 13.11.2016
Merkmale:
- Erweitern Sie flip() für S3TC-komprimierte Texturen #94
- Formateigenschaftsabfragen Nr. 102 hinzugefügt
Verbesserungen:
- Fester Texturoperator=
- Erstes Handbuch hinzugefügt
Korrekturen:
- Die ATI2N-Swizzle-Parameter Nr. 121 wurden korrigiert
GLI 0.8.1.1 – 11.09.2016
Verbesserungen:
- GLM auf Version 0.9.8.0 aktualisiert
Korrekturen:
- Das Speichern von KTX-Würfelkarten wurde behoben
- Textur::clear-Build korrigiert
GLI 0.8.1.0 – 16.03.2016
Merkmale:
- Texturkopie hinzugefügt, keine Zuordnung erforderlich, nur Übertragung
- Unterbildkopie hinzugefügt
- Clear für Nicht-Mitglieder hinzugefügt
- Make_texture*-Hilfsfunktionen hinzugefügt
Verbesserungen:
- Unterstützung für komprimierte Npot-Texturen Nr. 73 hinzugefügt
- Bildzugriffscache zu generischen Texturen hinzugefügt
- Übersetzung des Luminanz-Alpha-Formats zu OpenGL 3.3+ durch RG-Swizzling hinzugefügt. #93
- Verbesserte Leistung beim Sampling mit Mipmaps
- Verbesserte Leistung des nächstgelegenen Filters ohne Rand mit Texture_lod (ca. 2,5-mal schneller mit Texture2d)
- Verbesserte Textur::data() (~18x mit Cube-Array, ~68x mit 2D)
- Verbesserte Textur::size() (~3,1x mit Cube-Array, ~3,9x mit 2D)
- Verbesserte gleichzeitige Aufrufe von Texture::Size() und Texture::Extent() (~2,1x mit Cube-Array, ~2,3x mit 2D)
Korrekturen:
- DX10 DDS-Speicherung von 3D-Texturen Nr. 91 behoben
- Die BGRX-Übersetzung mit PROFILE_GL33-Profil Nr. 92 wurde korrigiert
- Das Laden der 3D-Textur durch DDS9 wurde behoben und als 2D-Textur Nr. 93 erkannt
GLI 0.8.0.0 – 16.02.2016
Merkmale:
- Textur-Swizzle-Unterstützung Nr. 79 hinzugefügt
- Unterstützung für Texturspeicher-Swizzle hinzugefügt
- Texturkonvertierung von jedem unkomprimierten Format in jedes unkomprimierte Format hinzugefügt
- Textur-Lod hinzugefügt
- Textur-Mipmaps-Generierung für unkomprimierte Formate hinzugefügt
- Unterstützung für Laden und Speichern hinzugefügt
- Unterstützung für viele neue Formate hinzugefügt
- Sampler 1D, 2D, 3D, Array und Cube-Map hinzugefügt
- Sampler-Texel-Abruf und Texel-Schreiben hinzugefügt
- Sampler klar hinzugefügt
- Transformationsalgorithmus zur Berechnung der Arithmetik zwischen Texeln hinzugefügt
- Reduzieralgorithmus hinzugefügt, um alle Texel innerhalb eines Bildes zu vergleichen
Verbesserungen:
- Neugeordnete Formate, um sie an die Vulkan-Formate anzupassen
- Verbesserte OpenGL-Übersetzung für mehrere Profile: KTX, ES2.0, ES3.0, GL3.2 und GL3.3
- Verbesserte Doxygen-Dokumentation
Korrekturen:
- PVRTC2-Unterstützung behoben
- Luminanz und Alpha-Übersetzung auf OpenGL #56 korrigiert
- DXGI_FORMAT_B8G8R8X8_UNORM_SRGB-Unterstützung Nr. 59 behoben
- Das Laden von FORMAT_RGBA8_UNORM DDS mit dem DDPF_RGBA-Modus Nr. 60 wurde behoben
- Die Behandlung von DDS DDPF_ALPHAPIXELS #68 wurde korrigiert
- Korrigierte Bilder, besser passende Namen und Formate #78 #81 #80
- BC4U- und BC5U-Dateien, die vom MS DDS-Loader Nr. 82 generiert wurden, wurden korrigiert
In Arbeit:
- Unterstützung für KMG-Container und Spezifikationsvorschlag hinzugefügt
GLI 0.7.0.0 – 01.09.2015
- Laden und Speichern von KTX hinzugefügt
- gli::load für generisches Laden von Dateien hinzugefügt, entweder DDS- oder KTX-Dateien, je nach Dateinamenerweiterung
- gli::save zum allgemeinen Speichern von Dateien hinzugefügt, entweder DDS- oder KTX-Dateien, je nach Dateinamenerweiterung
- Texturansichten mit unterschiedlichen Texturformaten hinzugefügt, einschließlich komprimierter Texturformate
- Zusätzliche Feinkörnigkeit beinhaltet
- Verbesserte API-Dokumentation
- Viel schnellere Texturvergleiche sind nicht optimal. (Gemessen etwa 21x schneller auf Intel IVB)
- Explizite Handhabung von Texturzielen: Es wurden verschiedene Fälle behoben, in denen Cubemap- und Texturarrays nicht mit DDS geladen werden konnten
- GCC-Build korrigiert
- Warnungen behoben
- Gespeicherte DDS-Header-Größe auf #52 behoben
GLI 0.6.1.1 – 18.07.2015
- Aktualisierte API-Dokumentation
- Linkfehler behoben
GLI 0.6.1.0 – 18.07.2015
- Inkonsistenzen der Schnittstelle behoben
- Verbesserte Leistung von clear(), data() und size() durch Caching
- Interne Abhängigkeit von std::fstream entfernt
- Unterstützung für FORMAT_BGRX8_UNORM und FORMAT_BGRX8_SRGB Nr. 48 und Nr. 43 hinzugefügt
- Verbessertes Laden von FORMAT_RGB8_UNORM
GLI 0.6.0.0 – 28.06.2015
- Großes Refactoring
- Das Laden von DDS aus dem Speicher wurde hinzugefügt
- Speichern von DDS im Speicher hinzugefügt
- Verbesserte DDS-Abdeckung für die Formate R, RG, RGB und RGBA
- Unterstützung für DDS ASTC, PVRTC, ATC und ETC hinzugefügt
- Unterstützung für DDS Alpha, Luminanz und Alpha-Luminanz hinzugefügt
- PVRTC2-, ETC2- und EAC-Formate hinzugefügt
GLI 0.5.1.1 – 20.01.2014
- Der vertauschte RGB-Kanal beim Zurücklesen eines DDS wurde behoben
- getMask*-Linkfehler behoben
GLI 0.5.1.0 – 18.01.2014
- Flip-Funktion hinzugefügt
- Funktion „level_count“ hinzugefügt
- Interaktion mit std::map behoben (#33)
- Funktionen texelFetch und texelWrite hinzugefügt
GLI 0.5.0.0 – 24.11.2013
- Im Wesentlichen eine Neufassung der Bibliothek
- Explizite Kopien hinzugefügt
- Einzelne Speicherzuweisung pro Texturspeicher hinzugefügt
- Texturansichten hinzugefügt
- Texturkopien hinzugefügt
- Vergleichsoperatoren hinzugefügt
- Klar hinzugefügt
GLI 0.4.1.0: 10.03.2013
- DDS-Speicherung hinzugefügt
- GCC-Build korrigiert
- XCode-Build korrigiert
GLI 0.4.0.0: 28.01.2013
- Umfangreiches API-Refactoring
- Leistungsverbesserungen beim Laden: 50x beim Debuggen und 50 % beim Release-Build
- Texture2DArray hinzugefügt
- TextureCube und TextureCubeArray hinzugefügt
- Textur3D hinzugefügt
- Textur1D und Textur1DArray hinzugefügt
- Verbesserte DDS-Ladeunterstützung
GLI 0.3.0.3: 05.04.2011
GLI 0.3.0.2: 08.02.2011
GLI 0.3.0.1: 2010-10-15
GLI 0.3.0.0: 01.10.2010
- DDS10-Laden und -Speichern hinzugefügt (BC1 - BC7)
- Erweiterungssystem hinzugefügt
- Automatische OpenGL-Texturobjekterstellung aus Datei hinzugefügt
GLI 0.2.2.0: 07.09.2010
GLI 0.2.1.1: 2010-05-12
GLI 0.2.1.0: 2010-02-15
- TexelWrite-Funktion hinzugefügt
- Visual Studio 2010-Warnungen behoben
- Readme.txt und copying.txt hinzugefügt
GLI 0.2.0.0: 10.01.2010
- Aktualisierte API
- Boost-Abhängigkeit entfernt
GLI 0.1.1.0: 2009-09-18
- DDS-Loader behoben
- RGB8 zum DDS-Loader hinzugefügt
- Komponenten-Swizzle-Vorgang hinzugefügt
- Unterstützung für 32-Bit-Integer-Komponenten hinzugefügt
- Texel-Abruf behoben
GLI 0.1.0.0: 28.03.2009
- TGA-Loader hinzugefügt
- DDS-Loader hinzugefügt
- Duplikat, Zuschnitt, Teilkopie hinzugefügt
- Mipmaps-Generierung hinzugefügt.