OpenGL Image ( GLI ) は、グラフィック ソフトウェア用のヘッダーのみの C++ イメージ ライブラリです。
GLI は、イメージ ファイル ( KTXおよびDDS ) のロード、グラフィックス API のテクスチャ作成の促進、テクスチャの比較、テクスチャ テクセルへのアクセス、テクスチャのサンプル、テクスチャの変換、ミップマップの生成などを行うためのクラスと関数を提供します。
このライブラリはOpenGLまたはVulkanと完全に連携しますが、他のサードパーティ ライブラリや SDK との相互運用性も保証します。これは、ソフトウェア レンダリング (レイトレーシング/ラスタライゼーション)、画像処理、画像ベースのソフトウェア テスト、またはシンプルで便利な画像ライブラリを必要とするあらゆる開発コンテキストに適しています。
GLI はC++11 で書かれています。これは依存関係のないプラットフォームに依存しないライブラリであり、次のコンパイラをサポートします。
- Apple Clang 6.0 以降
- GCC 4.7 以降
- インテル C++ コンポーザー XE 2013 以降
- LLVM 3.4以降
- Visual C++ 2013 以降
- 任意の C++11 コンパイラ
GLIの詳細については、マニュアルと API リファレンス ドキュメントをご覧ください。ソース コードとドキュメントは、Happy Bunny License (Modified MIT) または MIT License に基づいてライセンスされています。
プル リクエストを送信してプロジェクトに貢献していただきありがとうございます。
# 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 | Linux 64 ビット | Clang 3.9、Clang 7、Clang 9、Clang 10、GCC 4.8、GCC 7.4、GCC 9、GCC 10 | |
AppVeyor | Windows 32 および 64 | Visual Studio 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 圧縮テクスチャ用の flick() の拡張 #94
- フォーマットプロパティクエリを追加 #102
改善点:
- 固定テクスチャ演算子=
- 初期マニュアルを追加しました
修正:
- ATI2N スウィズル パラメータ #121 を修正
GLI 0.8.1.1 - 2016-09-11
改善点:
- GLM を 0.9.8.0 リリースに更新しました
修正:
- KTX キューブマップの保存を修正
- テクスチャ::クリアビルドを修正
GLI 0.8.1.0 - 2016-03-16
特徴:
- テクスチャ コピーを追加しました。割り当ては関係せず、転送のみです。
- サブ画像のコピーを追加しました
- 非会員クリアを追加
- make_texture* ヘルパー関数を追加しました
改善点:
- 圧縮 npot テクスチャのサポートを追加 #73
- 汎用テクスチャに画像アクセス キャッシュを追加しました
- RG スウィズリングによるルミナンス アルファ形式の変換を OpenGL 3.3 以降に追加しました。 #93
- ミップマップを使用したサンプリング時のパフォーマンスの向上
- texture_lod のパフォーマンスを使用して境界線のない最近接フィルターを改善しました (texture2d を使用すると約 2.5 倍高速になります)
- texture::data() の改善 (立方体配列で最大 18 倍、2D で最大 68 倍)
- texture::size() の改善 (立方体配列で最大 3.1 倍、2D で最大 3.9 倍)
- texture::size() と texture::extent() の同時呼び出しが改善されました (キューブ配列で最大 2.1 倍、2D で最大 2.3 倍)
修正:
- 3D テクスチャの DX10 DDS 保存を修正 #91
- PROFILE_GL33 プロファイル #92 による BGRX 変換を修正しました
- 2D テクスチャとして検出される 3D テクスチャの DDS9 ロードを修正 #93
GLI 0.8.0.0 - 2016-02-16
特徴:
- テクスチャスウィズルのサポートを追加 #79
- テクスチャ メモリ スウィズルのサポートを追加しました
- 任意の非圧縮フォーマットから任意の非圧縮フォーマットへのテクスチャ変換を追加しました。
- テクスチャロッドを追加しました
- 非圧縮フォーマット用のテクスチャ ミップマップ生成を追加しました
- ロードとストアのサポートを追加しました
- 多くの新しい形式のサポートが追加されました
- サンプラー 1D、2D、3D、アレイ、キューブ マップを追加
- サンプラーのテクセルフェッチとテクセル書き込みを追加しました
- サンプラークリアを追加
- テクセル間の算術計算を行うための変換アルゴリズムを追加しました
- 画像内のすべてのテクセルを比較する削減アルゴリズムを追加しました
改善点:
- Vulkan フォーマットに合わせてフォーマットを並べ替えました
- 複数のプロファイルに対する OpenGL 変換の改善: KTX、ES2.0、ES3.0、GL3.2、および GL3.3
- Doxygen ドキュメントの改善
修正:
- PVRTC2 サポートを修正
- OpenGL #56 への輝度とアルファ変換を修正しました
- DXGI_FORMAT_B8G8R8X8_UNORM_SRGB サポートを修正 #59
- DDPF_RGBA モード #60 を使用した FORMAT_RGBA8_UNORM DDS ロードを修正しました
- DDS DDPF_ALPHAPIXELS #68 の処理を修正しました
- 画像を修正し、名前と形式の一致を改善 #78 #81 #80
- MS DDS ローダー #82 から生成された BC4U および BC5U ファイルを修正しました
進行中の作業:
- KMG コンテナのサポートと仕様提案を追加しました
GLI 0.7.0.0 - 2015-09-01
- KTXのロードと保存を追加しました
- ファイル名拡張子に応じて DDS または KTX ファイルのいずれかの汎用ファイルをロードするための gli::load を追加しました
- ファイル名の拡張子に応じて DDS または KTX ファイルのいずれかを保存するための gli::save を追加しました。
- 圧縮テクスチャ形式を含む、さまざまなテクスチャ形式を使用したテクスチャ ビューを追加しました
- 追加された細かい粒度には以下が含まれます
- APIドキュメントの改善
- テクスチャ比較が非常に高速になるのは最適ではない場合です。 (Intel IVB では最大 21 倍高速に測定)
- テクスチャ ターゲットの明示的な処理: DDS でロードに失敗するキューブマップとテクスチャ配列のさまざまなケースを修正しました。
- GCC ビルドを修正
- 警告を修正しました
- #52 で保存された DDS ヘッダー サイズを修正しました
GLI 0.6.1.1 - 2015-07-18
- API ドキュメントを更新しました
- リンクエラーを修正
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 アルファ、輝度、およびアルファ輝度のサポートを追加しました
- 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 を追加しました
- texture3D を追加しました
- 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 ローダー
- DDSローダーにRGB8を追加
- コンポーネントのスウィズル操作を追加
- 32 ビット整数コンポーネントのサポートを追加しました
- 固定テクセルフェッチ
GLI 0.1.0.0: 2009-03-28
- TGAローダーを追加しました
- DDSローダーを追加しました
- 追加された複製、トリミング、部分コピー
- ミップマップの生成を追加しました。