OpenGL Image ( GLI ) 是一個用於圖形軟體的僅有頭檔的 C++ 影像庫。
GLI提供類別和函數來載入影像檔案( KTX和DDS )、促進圖形 API 紋理創建、比較紋理、存取紋理像素、取樣紋理、轉換紋理、生成 mipmap 等。
該程式庫與OpenGL或Vulkan完美配合,但它還確保與其他第三方程式庫和 SDK 的互通性。它是軟體渲染(光線追蹤/光柵化)、影像處理、基於影像的軟體測試或任何需要簡單方便的影像庫的開發環境的良好候選者。
GLI是用 C++11 寫的。它是一個獨立於平台的函式庫,沒有依賴性,它支援以下編譯器:
- Apple Clang 6.0 及更高版本
- GCC 4.7 及更高版本
- 英特爾 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;
}
最新發布
健康項目
服務 | 系統 | 編譯器 | 地位 |
---|
崔維斯·西爾 | Linux 64 位元 | 鏗鏘 3.9、鏗鏘 7、鏗鏘 9、鏗鏘 10、GCC 4.8、GCC 7.4、GCC 9、GCC 10 | |
應用程式載體 | Windows 32 和 64 | 視覺工作室2013 | |
發行說明
GLI 0.8.3.0 - 2017-XX-XX
特徵:
- 新增了 DXT1、DXT3、DXT5、ATI1N 和 ATI2N 的解壓縮和取樣 #110 #119
- 新增了深度和模板格式查詢#119
- 向採樣器新增了texture_grad
修復:
GLI 0.8.2.0 - 2016-11-13
特徵:
- 擴充 S3TC 壓縮紋理的 Flip() #94
- 新增了格式屬性查詢 #102
改進:
修復:
- 修復了 ATI2N swizzle 參數 #121
GLI 0.8.1.1 - 2016-09-11
改進:
修復:
- 修復了 KTX 立方體貼圖保存問題
- 固定紋理::清晰構建
GLI 0.8.1.0 - 2016-03-16
特徵:
- 添加紋理複製,不涉及分配,僅傳輸
- 新增了子圖像副本
- 新增非會員清除
- 新增了 make_texture* 輔助函數
改進:
- 添加了壓縮 npot 紋理支援 #73
- 向通用紋理添加了圖像訪問緩存
- 透過 RG swizzling 新增了亮度 alpha 格式轉換到 OpenGL 3.3+。第93章
- 改進了使用 mipmap 採樣時的性能
- 使用texture_lod性能改進了無邊框的最近過濾器(使用texture2d時速度提高約2.5倍)
- 改進的紋理::data()(使用立方體數組時約為 18 倍,使用 2D 時約為 68 倍)
- 改良的texture::size()(使用立方體數組時約為 3.1 倍,使用 2D 時約為 3.9 倍)
- 改進了同時進行的texture::size()和texture::extent()呼叫(使用立方體數組時~2.1x,使用2D時~2.3x)
修復:
- 修正了 DX10 DDS 保存 3D 紋理的問題 #91
- 修正了 PROFILE_GL33 設定檔的 BGRX 翻譯 #92
- 修正了 DDS9 載入 3D 紋理偵測為 2D 紋理的問題 #93
GLI 0.8.0.0 - 2016-02-16
特徵:
- 添加了紋理混合支援#79
- 添加了紋理內存混合支持
- 添加了從任何未壓縮格式到任何未壓縮格式的紋理轉換
- 添加了紋理 lod
- 新增了未壓縮格式的紋理 mipmap 生成
- 添加了對加載和存儲的支持
- 新增了對許多新格式的支持
- 新增了採樣器 1D、2D、3D、陣列和立方體貼圖
- 添加了採樣器紋素萃取和紋素寫入
- 新增了採樣器清除
- 增加了變換演算法來計算紋素之間的算術
- 新增了減少演算法來比較影像中的所有紋理像素
改進:
- 重新排序格式以符合 Vulkan 格式
- 改進了多個設定檔的 OpenGL 轉換:KTX、ES2.0、ES3.0、GL3.2 和 GL3.3
- 改進的 Doxygen 文檔
修復:
- 修復了 PVRTC2 支持
- 修復了 OpenGL 的亮度和 Alpha 轉換 #56
- 修正了 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB 支援 #59
- 修正了使用 DDPF_RGBA 模式載入 FORMAT_RGBA8_UNORM DDS #60
- 修正了 DDS DDPF_ALPHAPIXELS 的處理 #68
- 修復圖像,更好地匹配名稱和格式 #78 #81 #80
- 修正了 MS DDS 載入程式產生的 BC4U 和 BC5U 檔案 #82
正在進行的工作:
GLI 0.7.0.0 - 2015-09-01
- 添加了KTX載入和保存
- 新增了 gli::load 用於載入通用文件,DDS 或 KTX 文件取決於檔案副檔名
- 新增了 gli::save 用於保存通用文件,DDS 或 KTX 文件取決於檔案副檔名
- 新增了使用不同紋理格式的紋理視圖,包括壓縮紋理格式
- 新增的細粒度包括
- 改進的 API 文件
- 更快的紋理比較並不是最佳情況。 (在英特爾 IVB 上測得速度快約 21 倍)
- 明確處理紋理目標:修復了立方體貼圖和紋理數組無法使用 DDS 加載的各種情況
- 修復了 GCC 構建
- 修復警告
- 修正了 #52 上儲存的 DDS 標頭大小
GLI 0.6.1.1 - 2015-07-18
GLI 0.6.1.0 - 2015-07-18
- 修復了介面不一致的問題
- 使用快取改進了clear()、data()和size()效能
- 刪除了對 std::fstream 的內部依賴
- 新增了 FORMAT_BGRX8_UNORM 和 FORMAT_BGRX8_SRGB 支援 #48、#43
- 改進了 FORMAT_RGB8_UNORM 加載
GLI 0.6.0.0 - 2015-06-28
- 大型重構
- 新增了從記憶體載入DDS
- 新增將DDS儲存到內存
- 改進了 R、RG、RGB 和 RGBA 格式的 DDS 覆蓋範圍
- 增加了 DDS ASTC、PVRTC、ATC 和 ETC 支持
- 添加了 DDS alpha、亮度和 alpha 亮度支持
- 新增了 PVRTC2、ETC2 和 EAC 格式
GLI 0.5.1.1 - 2014-01-20
- 修復了讀回 DDS 時混合的 RGB 通道
- 修復了 getMask* 連結錯誤
GLI 0.5.1.0 - 2014-01-18
- 新增翻轉功能
- 新增level_count函數
- 修復了與 std::map 的交互作用(#33)
- 新增了 texelFetch 和 texelWrite 函數
GLI 0.5.0.0 - 2013-11-24
- 本質上是對庫的重寫
- 新增顯式副本
- 為每個紋理儲存添加了單一記憶體分配
- 新增紋理視圖
- 新增紋理副本
- 新增了比較運算符
- 添加清除
GLI 0.4.1.0: 2013-03-10
- 新增DDS保存
- 修復了 GCC 構建
- 修復了 XCode 構建
GLI 0.4.0.0: 2013-01-28
- 大型API重構
- 載入時的效能改進:調試時提高 50 倍,發布版本提高 50%
- 新增了texture2DArray
- 新增了textureCube和textureCubeArray
- 新增了紋理3D
- 新增了texture1D和texture1DArray
- 改進的 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
- 新增了 DDS10 載入和儲存 (BC1 - BC7)
- 新增擴充系統
- 新增了從檔案自動建立 OpenGL 紋理對象
GLI 0.2.2.0: 2010-09-07
GLI 0.2.1.1: 2010-05-12
GLI 0.2.1.0: 2010-02-15
- 新增 texelWrite 函數
- 修復了 Visual Studio 2010 警告
- 新增了readme.txt和copying.txt
GLI 0.2.0.0: 2010-01-10
GLI 0.1.1.0: 2009-09-18
- 固定DDS載入器
- 將 RGB8 新增至 DDS 載入程序
- 新增了組件混合操作
- 新增了 32 位元整數組件支持
- 修復了紋素獲取
GLI 0.1.0.0: 2009-03-28
- 新增了 TGA 載入程序
- 新增了 DDS 載入程序
- 新增了重複、裁切、部分副本
- 新增了 mipmap 生成。