OpenGL Image ( GLI ) adalah pustaka gambar C++ khusus header untuk perangkat lunak grafis.
GLI menyediakan kelas dan fungsi untuk memuat file gambar ( KTX dan DDS ), memfasilitasi pembuatan tekstur API grafis, membandingkan tekstur, mengakses texel tekstur, sampel tekstur, mengonversi tekstur, menghasilkan mipmaps, dll.
Pustaka ini berfungsi sempurna dengan OpenGL atau Vulkan tetapi juga memastikan interoperabilitas dengan pustaka dan SDK pihak ketiga lainnya. Ini adalah kandidat yang baik untuk rendering perangkat lunak (raytracing / rasterisasi), pemrosesan gambar, pengujian perangkat lunak berbasis gambar, atau konteks pengembangan apa pun yang memerlukan perpustakaan gambar yang sederhana dan nyaman.
GLI ditulis dalam C++11. Ini adalah perpustakaan platform independen tanpa ketergantungan dan mendukung kompiler berikut:
- Apple Dentang 6.0 dan lebih tinggi
- GCC 4.7 dan lebih tinggi
- Intel C++ Composer XE 2013 dan lebih tinggi
- LLVM 3.4 dan lebih tinggi
- Visual C++ 2013 dan lebih tinggi
- Kompiler C++11 apa pun
Untuk informasi lebih lanjut tentang GLI , silakan lihat manual dan dokumentasi referensi API. Kode sumber dan dokumentasinya dilisensikan di bawah Lisensi Happy Bunny (Modified MIT) atau Lisensi MIT.
Terima kasih telah berkontribusi pada proyek ini dengan mengirimkan permintaan penarikan.
# 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;
}
Rilis terbaru
Kesehatan Proyek
Melayani | Sistem | Penyusun | Status |
---|
Travis CI | Linux 64 bit | Dentang 3.9, Dentang 7, Dentang 9, Dentang 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
AplikasiVeyor | jendela 32 dan 64 | Visual Studio 2013 | |
Catatan rilis
GLI 0.8.3.0 - 2017-XX-XX
Fitur:
- Menambahkan dekompresi dan pengambilan sampel DXT1, DXT3, DXT5, ATI1N dan ATI2N #110 #119
- Menambahkan kueri format kedalaman dan stensil #119
- Menambahkan texture_grad ke sampler
Perbaikan:
GLI 0.8.2.0 - 13-11-2016
Fitur:
- Perluas flip() untuk tekstur terkompresi S3TC #94
- Menambahkan kueri properti format #102
Perbaikan:
- Operator tekstur tetap=
- Menambahkan manual awal
Perbaikan:
- Memperbaiki parameter swizzle ATI2N #121
GLI 0.8.1.1 - 11-09-2016
Perbaikan:
- Memperbarui GLM ke rilis 0.9.8.0
Perbaikan:
- Memperbaiki penghematan peta kubus KTX
- Tekstur tetap :: build yang jelas
GLI 0.8.1.0 - 16-03-2016
Fitur:
- Menambahkan salinan tekstur, tidak melibatkan alokasi, hanya transfer
- Menambahkan salinan sub-gambar
- Ditambahkan non-anggota yang jelas
- Menambahkan fungsi pembantu make_texture*
Perbaikan:
- Menambahkan dukungan tekstur npot terkompresi #73
- Menambahkan cache akses gambar ke tekstur generik
- Menambahkan terjemahan format alpha luminance ke OpenGL 3.3+ melalui RG swizzling. #93
- Peningkatan kinerja saat pengambilan sampel menggunakan mipmaps
- Peningkatan filter terdekat tanpa batas menggunakan kinerja texture_lod (~2,5x lebih cepat dengan texture2d)
- Peningkatan tekstur::data() (~18x dengan susunan kubus, ~68x dengan 2D)
- Peningkatan tekstur::size() (~3,1x dengan susunan kubus, ~3,9x dengan 2D)
- Peningkatan panggilan texture::size() dan texture::extent() secara simultan (~2,1x dengan array kubus, ~2,3x dengan 2D)
Perbaikan:
- Memperbaiki penghematan DX10 DDS pada tekstur 3D #91
- Memperbaiki terjemahan BGRX dengan profil PROFILE_GL33 #92
- Memperbaiki pemuatan DDS9 pada tekstur 3D yang terdeteksi sebagai tekstur 2D #93
GLI 0.8.0.0 - 16-02-2016
Fitur:
- Menambahkan dukungan swizzle tekstur #79
- Menambahkan dukungan swizzle memori tekstur
- Menambahkan konversi tekstur dari format apa pun yang tidak terkompresi ke format apa pun yang tidak terkompresi
- Menambahkan tekstur lod
- Menambahkan pembuatan tekstur mipmaps untuk format tidak terkompresi
- Menambahkan dukungan untuk memuat dan menyimpan
- Menambahkan dukungan untuk banyak format baru
- Menambahkan sampler 1D, 2D, 3D, array dan peta kubus
- Menambahkan pengambilan sampel texel dan penulisan texel
- Menambahkan sampler jelas
- Menambahkan algoritma transformasi untuk menghitung aritmatika antar texel
- Menambahkan algoritma pengurangan untuk membandingkan semua texel dalam suatu gambar
Perbaikan:
- Menyusun ulang format agar sesuai dengan format Vulkan
- Terjemahan OpenGL yang ditingkatkan dengan beberapa profil: KTX, ES2.0, ES3.0, GL3.2 dan GL3.3
- Dokumentasi Doxygen yang ditingkatkan
Perbaikan:
- Memperbaiki dukungan PVRTC2
- Memperbaiki pencahayaan dan terjemahan alfa ke OpenGL #56
- Memperbaiki dukungan DXGI_FORMAT_B8G8R8X8_UNORM_SRGB #59
- Memperbaiki pemuatan DDS FORMAT_RGBA8_UNORM menggunakan mode DDPF_RGBA #60
- Memperbaiki penanganan DDS DDPF_ALPHAPIXELS #68
- Memperbaiki gambar, nama dan format yang lebih cocok #78 #81 #80
- Memperbaiki file BC4U dan BC5U yang dihasilkan dari pemuat MS DDS #82
Pekerjaan sedang berlangsung:
- Menambahkan dukungan kontainer KMG dan proposal spesifikasi
GLI 0.7.0.0 - 01-09-2015
- Menambahkan pemuatan dan penyimpanan KTX
- Menambahkan gli::load untuk memuat file umum, baik file DDS atau KTX tergantung pada ekstensi nama file
- Menambahkan gli::save untuk menyimpan file umum, baik file DDS atau KTX tergantung pada ekstensi nama file
- Menambahkan tampilan tekstur menggunakan format tekstur berbeda, termasuk format tekstur terkompresi
- Ditambahkan granularitas halus termasuk
- Dokumentasi API yang ditingkatkan
- Perbandingan tekstur yang lebih cepat bukanlah kasus yang optimal. (Diukur ~21x lebih cepat pada Intel IVB)
- Menangani target tekstur secara eksplisit: memperbaiki berbagai kasus peta kubus dan susunan tekstur yang gagal dimuat dengan DDS
- Memperbaiki pembangunan GCC
- Memperbaiki peringatan
- Memperbaiki ukuran header DDS yang disimpan di #52
GLI 0.6.1.1 - 18-07-2015
- Dokumentasi API yang diperbarui
- Memperbaiki kesalahan tautan
GLI 0.6.1.0 - 18-07-2015
- Memperbaiki inkonsistensi antarmuka
- Peningkatan kinerja clear(), data() dan size() menggunakan cache
- Menghapus ketergantungan internal pada std::fstream
- Menambahkan dukungan FORMAT_BGRX8_UNORM dan FORMAT_BGRX8_SRGB #48, #43
- Peningkatan pemuatan FORMAT_RGB8_UNORM
GLI 0.6.0.0 - 28-06-2015
- Pemfaktoran ulang besar-besaran
- Menambahkan memuat DDS dari memori
- Menambahkan penyimpanan DDS ke memori
- Peningkatan cakupan DDS untuk format R, RG, RGB dan RGBA
- Menambahkan dukungan DDS ASTC, PVRTC, ATC dan ETC
- Menambahkan dukungan DDS alpha, luminance dan alpha luminance
- Menambahkan format PVRTC2, ETC2 dan EAC
GLI 0.5.1.1 - 20-01-2014
- Memperbaiki saluran RGB yang swizzled saat membaca kembali DDS
- Memperbaiki kesalahan tautan getMask*
GLI 0.5.1.0 - 18-01-2014
- Menambahkan fungsi balik
- Menambahkan fungsi level_count
- Memperbaiki interaksi dengan std::map (#33)
- Menambahkan fungsi texelFetch dan texelWrite
GLI 0.5.0.0 - 24-11-2013
- Pada dasarnya penulisan ulang perpustakaan
- Menambahkan salinan eksplisit
- Menambahkan alokasi memori tunggal per penyimpanan tekstur
- Menambahkan tampilan tekstur
- Menambahkan salinan tekstur
- Menambahkan operator perbandingan
- Ditambahkan jelas
GLI 0.4.1.0: 10-03-2013
- Menambahkan penghematan DDS
- Memperbaiki pembangunan GCC
- Memperbaiki pembuatan XCode
GLI 0.4.0.0: 28-01-2013
- Pemfaktoran ulang API yang besar
- Peningkatan kinerja saat memuat: 50x dalam debug dan 50% dalam versi rilis
- Menambahkan texture2DArray
- Menambahkan textureCube dan textureCubeArray
- Menambahkan tekstur3D
- Menambahkan tekstur1D dan tekstur1DArray
- Peningkatan dukungan pemuatan DDS
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
- Menambahkan pemuatan dan penyimpanan DDS10 (BC1 - BC7)
- Menambahkan sistem ekstensi
- Menambahkan pembuatan objek tekstur OpenGL otomatis dari file
GLI 0.2.2.0: 07-09-2010
- Menambahkan eksportir DDS
GLI 0.2.1.1: 12-05-2010
- Memperbaiki pembangunan GCC
GLI 0.2.1.0: 15-02-2010
- Menambahkan fungsi texelWrite
- Memperbaiki peringatan Visual Studio 2010
- Menambahkan readme.txt dan copying.txt
GLI 0.2.0.0: 10-01-2010
- API yang diperbarui
- Menghapus ketergantungan Boost
GLI 0.1.1.0: 18-09-2009
- Memperbaiki pemuat DDS
- Menambahkan RGB8 ke pemuat DDS
- Menambahkan operasi swizzle komponen
- Menambahkan dukungan komponen integer 32 bit
- Memperbaiki pengambilan texel
GLI 0.1.0.0: 28-03-2009
- Menambahkan pemuat TGA
- Menambahkan pemuat DDS
- Menambahkan duplikat, memotong, menyalin sebagian
- Menambahkan generasi mipmaps.