OpenGL 이미지( GLI )는 그래픽 소프트웨어용 헤더 전용 C++ 이미지 라이브러리입니다.
GLI는 이미지 파일( KTX 및 DDS ) 로드, 그래픽 API 텍스처 생성 촉진, 텍스처 비교, 텍스처 텍셀 액세스, 텍스처 샘플, 텍스처 변환, 밉맵 생성 등을 위한 클래스와 기능을 제공합니다.
이 라이브러리는 OpenGL 또는 Vulkan 과 완벽하게 작동하지만 다른 타사 라이브러리 및 SDK와의 상호 운용성을 보장합니다. 소프트웨어 렌더링(레이트레이싱/래스터화), 이미지 처리, 이미지 기반 소프트웨어 테스트 또는 간단하고 편리한 이미지 라이브러리가 필요한 모든 개발 컨텍스트에 적합한 후보입니다.
GLI는 C++11로 작성되었습니다. 종속성이 없는 플랫폼 독립적 라이브러리이며 다음 컴파일러를 지원합니다.
- Apple Clang 6.0 이상
- GCC 4.7 이상
- Intel C++ Composer XE 2013 이상
- LLVM 3.4 이상
- 비주얼 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비트 | 클랭 3.9, 클랭 7, 클랭 9, 클랭 10, GCC 4.8, GCC 7.4, GCC 9, GCC 10 | |
앱베이어 | 윈도우 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를 추가했습니다.
개량:
수정 사항:
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배 더 빠름).
- 향상된 텍스처::data() (큐브 배열의 경우 ~18x, 2D의 경우 ~68x)
- 향상된 텍스처::size()(큐브 배열의 경우 ~3.1x, 2D의 경우 ~3.9x)
- 향상된 동시 텍스처::size() 및 텍스처::extent() 호출(큐브 배열의 경우 ~2.1x, 2D의 경우 ~2.3x)
수정 사항:
- 3D 텍스처의 DX10 DDS 저장 문제 수정 #91
- PROFILE_GL33 프로필 #92를 사용하여 BGRX 변환을 수정했습니다.
- 2D 텍스처 #93으로 감지된 3D 텍스처의 DDS9 로딩 문제를 수정했습니다.
GLI 0.8.0.0 - 2016-02-16
특징:
- 텍스처 스위즐 지원 추가 #79
- 텍스처 메모리 스위즐 지원 추가
- 압축되지 않은 형식에서 압축되지 않은 형식으로 텍스처 변환이 추가되었습니다.
- 텍스처 로드가 추가되었습니다.
- 비압축 형식에 대한 텍스처 밉맵 생성이 추가되었습니다.
- 로드 및 저장에 대한 지원이 추가되었습니다.
- 다양한 새로운 형식에 대한 지원이 추가되었습니다.
- 샘플러 1D, 2D, 3D, 배열 및 큐브 맵 추가
- 샘플러 텍셀 가져오기 및 텍셀 쓰기가 추가되었습니다.
- 샘플러 클리어 추가
- 텍셀 간 산술 연산을 계산하는 변환 알고리즘을 추가했습니다.
- 이미지 내의 모든 텍셀을 비교하는 축소 알고리즘이 추가되었습니다.
개량:
- Vulkan 형식과 일치하도록 형식이 재정렬되었습니다.
- KTX, ES2.0, ES3.0, GL3.2 및 GL3.3과 같은 여러 프로필에 대한 OpenGL 변환이 개선되었습니다.
- 향상된 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 문서
- 훨씬 빠른 텍스처 비교는 최적이 아닌 경우입니다. (인텔 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 알파, 휘도 및 알파 휘도 지원 추가
- 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를 추가했습니다.
- 텍스처1D 및 텍스처1DArray가 추가되었습니다.
- 향상된 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
- 업데이트된 API
- 부스트 종속성을 제거했습니다.
GLI 0.1.1.0: 2009-09-18
- 고정 DDS 로더
- DDS 로더에 RGB8 추가
- 구성요소 혼합 작업이 추가되었습니다.
- 32비트 정수 구성요소 지원 추가
- 고정 텍셀 가져오기
GLI 0.1.0.0: 2009-03-28
- TGA 로더 추가
- DDS 로더 추가
- 복제, 자르기, 부분 복사 추가됨
- 밉맵 생성이 추가되었습니다.