OpenGL Image ( GLI ) เป็นไลบรารีรูปภาพ C++ สำหรับส่วนหัวเท่านั้นสำหรับซอฟต์แวร์กราฟิก
GLI จัดให้มีคลาสและฟังก์ชันในการโหลดไฟล์รูปภาพ ( KTX และ DDS ) อำนวยความสะดวกในการสร้างพื้นผิว API กราฟิก เปรียบเทียบพื้นผิว เข้าถึงเท็กซ์เซลของพื้นผิว ตัวอย่างพื้นผิว แปลงพื้นผิว สร้าง mipmaps ฯลฯ
ไลบรารีนี้ทำงานได้อย่างสมบูรณ์แบบกับ OpenGL หรือ Vulkan แต่ยังรับประกันความสามารถในการทำงานร่วมกับไลบรารีและ SDK ของบุคคลที่สามอื่น ๆ อีกด้วย เป็นตัวเลือกที่ดีสำหรับการเรนเดอร์ซอฟต์แวร์ (raytracing / rasterization) การประมวลผลภาพ การทดสอบซอฟต์แวร์ที่ใช้รูปภาพ หรือบริบทการพัฒนาใดๆ ที่ต้องใช้ไลบรารีรูปภาพที่ง่ายและสะดวก
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 (Modified 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;
}
รุ่นล่าสุด
โครงการสุขภาพ
บริการ | ระบบ | คอมไพเลอร์ | สถานะ |
---|
ทราวิส ซีไอ | ลินุกซ์ 64 บิต | เสียงดังกราว 3.9, เสียงดังกราว 7, เสียงดังกราว 9, เสียงดังกราว 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
AppVeyor | วินโดวส์ 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 - 13-11-2559
คุณสมบัติ:
- ขยายการพลิก() สำหรับพื้นผิวที่บีบอัด S3TC #94
- เพิ่มแบบสอบถามคุณสมบัติรูปแบบ #102
การปรับปรุง:
- ตัวดำเนินการพื้นผิวคงที่=
- เพิ่มคู่มือเริ่มต้น
การแก้ไข:
- แก้ไขพารามิเตอร์ swizzle ATI2N #121
GLI 0.8.1.1 - 11-09-2559
การปรับปรุง:
- อัปเดต GLM เป็นรุ่น 0.9.8.0
การแก้ไข:
- แก้ไขการบันทึกแผนที่คิวบ์ KTX
- พื้นผิวคงที่::โครงสร้างที่ชัดเจน
GLI 0.8.1.0 - 16-03-2559
คุณสมบัติ:
- เพิ่มสำเนาพื้นผิว ไม่มีการจัดสรร โอนเท่านั้น
- เพิ่มการคัดลอกรูปภาพย่อย
- เพิ่มผู้ที่ไม่ใช่สมาชิกชัดเจน
- เพิ่มฟังก์ชันตัวช่วย make_texture*
การปรับปรุง:
- เพิ่มการรองรับพื้นผิว npot ที่ถูกบีบอัด #73
- เพิ่มแคชการเข้าถึงรูปภาพให้กับพื้นผิวทั่วไป
- เพิ่มการแปลรูปแบบอัลฟ่าความสว่างเป็น OpenGL 3.3+ ผ่านการสลับ RG #93
- ปรับปรุงประสิทธิภาพเมื่อสุ่มตัวอย่างโดยใช้ mipmaps
- ปรับปรุงตัวกรองที่ใกล้ที่สุดโดยไม่มีเส้นขอบโดยใช้ประสิทธิภาพ texture_lod (เร็วขึ้น ~ 2.5 เท่าด้วย texture2d)
- ปรับปรุง texture::data() (~18x พร้อมอาร์เรย์คิวบ์, ~68x พร้อม 2D)
- ปรับปรุง texture::size() (~3.1x พร้อมอาร์เรย์คิวบ์, ~3.9x พร้อม 2D)
- ปรับปรุงการเรียก texture::size() และ texture::extent() พร้อมกัน (~2.1x พร้อม cube array, ~2.3x พร้อม 2D)
การแก้ไข:
- แก้ไขการบันทึก DX10 DDS ของพื้นผิว 3D #91
- แก้ไขการแปล BGRX ด้วยโปรไฟล์ PROFILE_GL33 #92
- แก้ไขการโหลดพื้นผิว 3D DDS9 ที่ตรวจพบว่าเป็นพื้นผิว 2D #93
GLI 0.8.0.0 - 16-02-2559
คุณสมบัติ:
- เพิ่มการรองรับพื้นผิว Swizzle #79
- เพิ่มการรองรับหน่วยความจำพื้นผิวแบบ sizzle
- เพิ่มการแปลงพื้นผิวจากรูปแบบที่ไม่มีการบีบอัดเป็นรูปแบบที่ไม่มีการบีบอัด
- เพิ่มพื้นผิวแล้ว
- เพิ่มการสร้าง mipmaps พื้นผิวสำหรับรูปแบบที่ไม่มีการบีบอัด
- เพิ่มการรองรับการโหลดและการจัดเก็บ
- เพิ่มการรองรับรูปแบบใหม่มากมาย
- เพิ่มตัวอย่างแผนที่ 1D, 2D, 3D, อาเรย์และคิวบ์
- เพิ่มตัวอย่างการดึงข้อมูล Texel และการเขียน Texel
- เพิ่มตัวอย่างที่ชัดเจน
- เพิ่มอัลกอริธึมการแปลงเพื่อคำนวณเลขคณิตระหว่างเท็กซัส
- เพิ่มอัลกอริธึมการลดขนาดเพื่อเปรียบเทียบเทคเซลทั้งหมดภายในรูปภาพ
การปรับปรุง:
- จัดลำดับรูปแบบใหม่เพื่อให้ตรงกับรูปแบบ Vulkan
- ปรับปรุงการแปล OpenGL สำหรับหลายโปรไฟล์: KTX, ES2.0, ES3.0, GL3.2 และ GL3.3
- ปรับปรุงเอกสาร Doxygen
การแก้ไข:
- แก้ไขการสนับสนุน PVRTC2
- แก้ไขความสว่างและการแปลอัลฟ่าเป็น OpenGL #56
- แก้ไขการสนับสนุน DXGI_FORMAT_B8G8R8X8_UNORM_SRGB #59
- แก้ไขการโหลด FORMAT_RGBA8_UNORM DDS โดยใช้โหมด DDPF_RGBA #60
- แก้ไขการจัดการ DDS DDPF_ALPHAPIXELS #68
- แก้ไขรูปภาพ ชื่อและรูปแบบที่ตรงกันดีขึ้น #78 #81 #80
- แก้ไขไฟล์ BC4U และ BC5U ที่สร้างจาก MS DDS loader #82
งานระหว่างดำเนินการ:
- เพิ่มการรองรับคอนเทนเนอร์ KMG และข้อเสนอข้อมูลจำเพาะ
GLI 0.7.0.0 - 01-09-2015
- เพิ่มการโหลดและการบันทึก KTX
- เพิ่ม gli::load สำหรับการโหลดไฟล์ทั่วไป ไม่ว่าจะเป็นไฟล์ DDS หรือ KTX ขึ้นอยู่กับนามสกุลไฟล์
- เพิ่ม gli::save สำหรับการบันทึกไฟล์ทั่วไป ทั้งไฟล์ DDS หรือ KTX ขึ้นอยู่กับนามสกุลไฟล์
- เพิ่มมุมมองพื้นผิวโดยใช้รูปแบบพื้นผิวที่แตกต่างกัน รวมถึงรูปแบบพื้นผิวที่ถูกบีบอัด
- เพิ่มรายละเอียดปลีกย่อยได้แก่
- ปรับปรุงเอกสาร API
- การเปรียบเทียบพื้นผิวที่เร็วกว่ามากไม่ใช่กรณีที่ไม่เหมาะสม (วัดเร็วขึ้นประมาณ 21 เท่าบน Intel IVB)
- การจัดการเป้าหมายพื้นผิวอย่างชัดเจน: แก้ไขกรณีต่างๆ ของ cubemap และอาร์เรย์พื้นผิวที่ไม่สามารถโหลดด้วย DDS
- แก้ไขการสร้าง GCC
- คำเตือนคงที่
- แก้ไขขนาดส่วนหัว DDS ที่บันทึกไว้ใน #52
GLI 0.6.1.1 - 18-07-2558
- อัปเดตเอกสาร API
- แก้ไขข้อผิดพลาดของลิงก์
GLI 0.6.1.0 - 18-07-2558
- แก้ไขความไม่สอดคล้องกันของอินเทอร์เฟซ
- ปรับปรุงประสิทธิภาพ clear(), data() และ size() โดยใช้แคช
- ลบการพึ่งพาภายในไปยัง std::fstream
- เพิ่มการสนับสนุน FORMAT_BGRX8_UNORM และ FORMAT_BGRX8_SRGB #48, #43
- ปรับปรุงการโหลด FORMAT_RGB8_UNORM
GLI 0.6.0.0 - 28-06-2558
- การรีแฟคเตอร์ขนาดใหญ่
- เพิ่มการโหลด DDS จากหน่วยความจำ
- เพิ่มการบันทึก DDS ลงในหน่วยความจำ
- ปรับปรุงความครอบคลุม DDS สำหรับรูปแบบ R, RG, RGB และ RGBA
- เพิ่มการรองรับ DDS ASTC, PVRTC, ATC และ ETC
- เพิ่มการรองรับ DDS alpha, luminance และ alpha luminance
- เพิ่มรูปแบบ PVRTC2, ETC2 และ EAC
GLI 0.5.1.1 - 20-01-2014
- แก้ไขช่อง RGB ที่สลับไปมาเมื่ออ่านกลับ DDS
- แก้ไขข้อผิดพลาดลิงก์ getMask*
GLI 0.5.1.0 - 18-01-2557
- เพิ่มฟังก์ชั่นพลิก
- เพิ่มฟังก์ชัน Level_count
- แก้ไขการโต้ตอบกับ std::map (#33)
- เพิ่มฟังก์ชัน texelFetch และ texelWrite
GLI 0.5.0.0 - 24-11-2556
- โดยพื้นฐานแล้วเป็นการเขียนใหม่ของห้องสมุด
- เพิ่มสำเนาที่ชัดเจน
- เพิ่มการจัดสรรหน่วยความจำเดี่ยวต่อการจัดเก็บพื้นผิว
- เพิ่มมุมมองพื้นผิว
- เพิ่มสำเนาพื้นผิว
- เพิ่มตัวดำเนินการเปรียบเทียบ
- เพิ่มชัดเจน
GLI 0.4.1.0: 10-03-2556
- เพิ่มการบันทึก DDS
- แก้ไขการสร้าง GCC
- แก้ไขการสร้าง XCode
GLI 0.4.0.0: 28-01-2013
- การปรับโครงสร้าง API ขนาดใหญ่
- การปรับปรุงประสิทธิภาพเมื่อโหลด: 50x ในการแก้ไขข้อบกพร่องและ 50% ในรุ่น release
- เพิ่ม 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: 15-10-2553
GLI 0.3.0.0: 2010-10-01
- เพิ่มการโหลดและจัดเก็บ DDS10 (BC1 - BC7)
- เพิ่มระบบส่วนขยาย
- เพิ่มการสร้างวัตถุพื้นผิว OpenGL อัตโนมัติจากไฟล์
GLI 0.2.2.0: 07-09-2010
GLI 0.2.1.1: 12-05-2010
GLI 0.2.1.0: 15-02-2553
- เพิ่มฟังก์ชัน texelWrite
- แก้ไขคำเตือน Visual Studio 2010
- เพิ่ม readme.txt และ copying.txt
GLI 0.2.0.0: 10-01-2010
- อัปเดต API
- ลบการพึ่งพา Boost ออกแล้ว
GLI 0.1.1.0: 18-09-2552
- แก้ไขตัวโหลด DDS
- เพิ่ม RGB8 ลงในตัวโหลด DDS
- เพิ่มการดำเนินการ Swizzle ส่วนประกอบ
- เพิ่มการรองรับส่วนประกอบจำนวนเต็ม 32 บิต
- แก้ไขการดึงข้อมูล Texel
GLI 0.1.0.0: 28-03-2552
- เพิ่มตัวโหลด TGA
- เพิ่มตัวโหลด DDS
- เพิ่มสำเนา ครอบตัด คัดลอกบางส่วน
- เพิ่มการสร้าง mipmaps