OpenGL Image ( GLI ) — это библиотека изображений C++, предназначенная только для заголовков, для графического программного обеспечения.
GLI предоставляет классы и функции для загрузки файлов изображений ( KTX и DDS ), упрощения создания текстур с помощью графических API, сравнения текстур, доступа к текселям текстур, образцов текстур, преобразования текстур, создания MIP-карт и т. д.
Эта библиотека отлично работает с OpenGL или Vulkan , но также обеспечивает совместимость с другими сторонними библиотеками и SDK. Это хороший кандидат для программного рендеринга (трассировка лучей/растеризация), обработки изображений, тестирования программного обеспечения на основе изображений или любого контекста разработки, требующего простой и удобной библиотеки изображений.
GLI написан на C++11. Это независимая от платформы библиотека, независимая и поддерживающая следующие компиляторы:
- Apple Clang 6.0 и выше
- GCC 4.7 и выше
- Intel C++ Composer XE 2013 и выше
- LLVM 3.4 и выше
- Visual C++ 2013 и выше
- Любой компилятор C++11.
Для получения дополнительной информации о GLI ознакомьтесь с руководством и справочной документацией по API. Исходный код и документация лицензируются по лицензии Happy Bunny (модифицированная MIT) или лицензии MIT.
Благодарим за вклад в проект, отправив запросы на включение.
# 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;
}
Последний выпуск
Здоровье проекта
Услуга | Система | Компилятор | Статус |
---|
Трэвис CI | Линукс 64 бита | Clang 3.9, Clang 7, Clang 9, Clang 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
AppVeyor | Windows 32 и 64 | Визуальная Студия 2013 | |
Примечания к выпуску
ГЛИ 0.8.3.0 - 2017-XX-XX
Функции:
- Добавлена декомпрессия и сэмплирование DXT1, DXT3, DXT5, ATI1N и ATI2N #110 #119.
- Добавлены запросы глубины и формата трафарета № 119.
- Добавлена текстура_grad в сэмплеры.
Исправления:
ГЛИ 0.8.2.0 - 13 ноября 2016 г.
Функции:
- Расширение функции Flip() для текстур, сжатых S3TC #94.
- Добавлены запросы свойств формата № 102.
Улучшения:
- Исправлен оператор текстуры=
- Добавлено начальное руководство
Исправления:
- Исправлены параметры поворота ATI2N #121.
ГЛИ 0.8.1.1 - 11 сентября 2016 г.
Улучшения:
- Обновлен GLM до версии 0.9.8.0.
Исправления:
- Исправлено сохранение кубических карт KTX.
- Исправлена текстура::clear build
ГЛИ 0.8.1.0 - 16 марта 2016 г.
Функции:
- Добавлено копирование текстуры, выделение не требуется, только передача.
- Добавлена копия фрагмента изображения.
- Добавлено удаление лиц, не являющихся членами
- Добавлены вспомогательные функции make_texture*.
Улучшения:
- Добавлена поддержка сжатых текстур npot #73.
- Добавлен кеш доступа к изображениям для общих текстур.
- Добавлена трансляция альфа-формата яркости в OpenGL 3.3+ посредством RG swizzling. #93
- Улучшена производительность при выборке с использованием MIP-карт.
- Улучшен ближайший фильтр без рамки с использованием производительностиtexture_lod (примерно в 2,5 раза быстрее с текстурой2d).
- Улучшенная текстура::data() (~18x с кубическим массивом, ~68x с 2D)
- Улучшенная текстура::size() (~3,1x с кубическим массивом, ~3,9x с 2D)
- Улучшен одновременный вызов текстур::size() и текстуры::extent() (~2,1x с массивом кубов, ~2,3x с 2D)
Исправления:
- Исправлено сохранение 3D-текстур DX10 DDS #91.
- Исправлен перевод BGRX с профилем PROFILE_GL33 #92.
- Исправлена загрузка DDS9 3D-текстуры, обнаруженной как 2D-текстура № 93.
ГЛИ 0.8.0.0 - 16 февраля 2016 г.
Функции:
- Добавлена поддержка поворота текстур #79.
- Добавлена поддержка переключения текстурной памяти.
- Добавлено преобразование текстур из любого несжатого формата в любой несжатый формат.
- Добавлен текстурный лод
- Добавлена генерация MIP-карт текстур для несжатых форматов.
- Добавлена поддержка загрузки и сохранения.
- Добавлена поддержка многих новых форматов.
- Добавлен сэмплер 1D, 2D, 3D, карты массива и куба.
- Добавлены выборка текселей и запись текселей в сэмплер.
- Добавлен очистка сэмплера
- Добавлен алгоритм преобразования для вычисления арифметики между текселами.
- Добавлен алгоритм уменьшения для сравнения всех текселей изображения.
Улучшения:
- Форматы изменены в соответствии с форматами Vulkan.
- Улучшен перевод OpenGL для нескольких профилей: KTX, ES2.0, ES3.0, GL3.2 и GL3.3.
- Улучшенная документация Doxygen.
Исправления:
- Исправлена поддержка PVRTC2.
- Исправлена трансляция яркости и альфа-канала в OpenGL #56.
- Исправлена поддержка DXGI_FORMAT_B8G8R8X8_UNORM_SRGB № 59.
- Исправлена загрузка DDS FORMAT_RGBA8_UNORM с использованием режима DDPF_RGBA #60.
- Исправлена обработка DDS DDPF_ALPHAPIXELS #68.
- Исправлены изображения, улучшено соответствие названий и форматов #78 #81 #80
- Исправлены файлы BC4U и BC5U, созданные загрузчиком MS DDS № 82.
В стадии разработки:
- Добавлена поддержка контейнеров KMG и предложение спецификаций.
ГЛИ 0.7.0.0 - 01.09.2015
- Добавлена загрузка и сохранение KTX.
- Добавлен gli::load для загрузки общих файлов, файлов DDS или KTX, в зависимости от расширения имени файла.
- Добавлен gli::save для сохранения общих файлов, файлов DDS или KTX, в зависимости от расширения имени файла.
- Добавлены виды текстур с использованием различных форматов текстур, включая форматы сжатых текстур.
- Добавлена мелкая детализация, включая
- Улучшенная документация API
- Гораздо более быстрое сравнение текстур не является оптимальным случаем. (Измерено примерно в 21 раз быстрее на Intel IVB)
- Явная обработка целевых текстур: исправлены различные случаи, когда кубические карты и массивы текстур не загружались с помощью DDS.
- Исправлена сборка GCC
- Исправлены предупреждения
- Исправлен размер сохраненного заголовка DDS в #52.
ГЛИ 0.6.1.1 - 18 июля 2015 г.
- Обновленная документация по API
- Исправлена ошибка ссылки
ГЛИ 0.6.1.0 - 18 июля 2015 г.
- Исправлены несоответствия интерфейса
- Улучшена производительность функцийclear(), data() и size() с использованием кэширования.
- Удалена внутренняя зависимость от std::fstream.
- Добавлена поддержка FORMAT_BGRX8_UNORM и FORMAT_BGRX8_SRGB №48, №43.
- Улучшена загрузка FORMAT_RGB8_UNORM.
ГЛИ 0.6.0.0 - 28.06.2015
- Большой рефакторинг
- Добавлена загрузка DDS из памяти.
- Добавлено сохранение DDS в память.
- Улучшено покрытие DDS для форматов R, RG, RGB и RGBA.
- Добавлена поддержка DDS ASTC, PVRTC, ATC и ETC.
- Добавлена поддержка DDS альфа, яркости и альфа-яркости.
- Добавлены форматы PVRTC2, ETC2 и EAC.
ГЛИ 0.5.1.1 - 20 января 2014 г.
- Исправлено переключение канала RGB при чтении DDS.
- Исправлена ошибка ссылки getMask*.
ГЛИ 0.5.1.0 - 18 января 2014 г.
- Добавлена функция переворота
- Добавлена функция level_count.
- Исправлено взаимодействие с std::map (#33).
- Добавлены функции texelFetch и texelWrite.
ГЛИ 0.5.0.0 - 24.11.2013
- По сути переписывание библиотеки
- Добавлены явные копии
- Добавлено единое выделение памяти для каждого хранилища текстур.
- Добавлены виды текстур.
- Добавлены копии текстур.
- Добавлены операторы сравнения.
- Добавлено удаление
ГЛИ 0.4.1.0: 10 марта 2013 г.
- Добавлено сохранение DDS.
- Исправлена сборка GCC
- Исправлена сборка XCode.
ГЛИ 0.4.0.0: 28 января 2013 г.
- Большой рефакторинг API
- Улучшение производительности при загрузке: 50 раз в отладке и 50 % в релизной сборке.
- Добавлена текстура2DArray.
- ДобавленыtextureCube иtextCubeArray.
- Добавлена текстура 3D.
- Добавлены текстура1D и текстура1DArray.
- Улучшена поддержка загрузки DDS.
ГЛИ 0.3.0.3: 05.04.2011
ГЛИ 0.3.0.2: 08.02.2011
ГЛИ 0.3.0.1: 15 октября 2010 г.
ГЛИ 0.3.0.0: 01.10.2010
- Добавлена загрузка и сохранение DDS10 (BC1 – BC7).
- Добавлена система расширений
- Добавлено автоматическое создание объекта текстуры OpenGL из файла.
ГЛИ 0.2.2.0: 07.09.2010
ГЛИ 0.2.1.1: 12 мая 2010 г.
ГЛИ 0.2.1.0: 15 февраля 2010 г.
- Добавлена функция texelWrite.
- Исправлены предупреждения Visual Studio 2010.
- Добавлены readme.txt и copying.txt.
ГЛИ 0.2.0.0: 10.01.2010
- Обновленный API
- Удалена зависимость Boost
ГЛИ 0.1.1.0: 18 сентября 2009 г.
- Исправлен загрузчик DDS.
- Добавлен RGB8 в загрузчик DDS.
- Добавлена операция поворота компонента.
- Добавлена поддержка 32-битных целочисленных компонентов.
- Исправлена выборка текселей
ГЛИ 0.1.0.0: 28 марта 2009 г.
- Добавлен загрузчик TGA.
- Добавлен загрузчик DDS.
- Добавлен дубликат, обрезка, частичная копия.
- Добавлена генерация MIP-карт.