LWJGL(https://www.lwjgl.org)은 그래픽(OpenGL/Vulkan), 오디오(OpenAL) 및 병렬 컴퓨팅(OpenCL) 애플리케이션 개발에 유용한 널리 사용되는 기본 API에 대한 크로스 플랫폼 액세스를 가능하게 하는 Java 라이브러리입니다. 이 액세스는 직접적이고 고성능이면서도 Java 생태계에 적합한 유형이 안전하고 사용자 친화적인 계층으로 래핑되어 있습니다.
LWJGL은 활성화 기술이며 낮은 수준의 액세스를 제공합니다. 이는 프레임워크가 아니며 기본 라이브러리가 노출하는 것보다 더 높은 수준의 유틸리티를 제공하지 않습니다. 따라서 초보 프로그래머는 라이브러리로 직접 작업하기 전에 LWJGL을 사용하는 프레임워크나 게임 엔진 중 하나를 사용해 보는 것이 좋습니다.
LWJGL은 오픈 소스 소프트웨어이며 무료로 사용할 수 있습니다.
유용한 링크:
연락하다:
기여하고 싶다면 문서/README를 참조하여 프로젝트 구조, 설치 지침 및 구성 옵션에 대한 간략한 개요를 확인하세요.
버전 3.1.0
부터 LWJGL은 모듈 세트로 배포됩니다. 핵심 모듈만 필수이며 모든 바인딩은 선택 사항입니다(그러나 일부 바인딩은 다른 바인딩에 따라 다름). LWJGL을 다운로드하는 가장 쉬운 방법은 웹사이트에서 빌드 구성기를 사용하는 것입니다.
빌드 구성자는 기존 프로젝트에 추가할 수 있는 Maven 및 Gradle 선언을 생성합니다. 이는 개발 중에 LWJGL을 사용하는 가장 쉬운 방법입니다.
LWJGL은 간단한 JAR 파일 세트로 다운로드할 수도 있습니다. 각 모듈은 다음 파일로 구성됩니다.
LWJGL 애플리케이션을 컴파일하고 실행하려면 코어 모듈의 기본 및 기본 JAR 파일과 사용된 각 바인딩을 클래스 경로에 추가해야 합니다. LWJGL은 기본 폴더를 임시 폴더로 추출하고 자동으로 로드하므로 추가 구성이 필요하지 않습니다. 더 많은 사용자 정의가 필요한 경우(예: 플랫폼별 설치 프로그램을 생성할 때) 네이티브를 수동으로 추출하고 java.library.path
를 통해 로드할 수 있습니다. 추가 옵션은 구성 클래스를 참조하세요.
LWJGL 3을 빌드하고 실행하려면 Java 8 이상이 필요하며 현재 다음 플랫폼/아키텍처를 지원합니다.
예제 코드:
LWJGL 2 코드를 LWJGL 3으로 마이그레이션하려면 마이그레이션 가이드를 참조하세요.
LWJGL 사용자가 직면하는 가장 일반적인 문제는 다음을 통해 간단하게 해결됩니다.
LWJGLX/debug는 이러한 많은 문제를 자동으로 감지하는 Java 에이전트입니다. 또한 LWJGL에 문제를 보고할 때 유용한 추적 로그를 생성할 수도 있습니다.
도움을 요청하거나 LWJGL의 버그가 의심되는 경우, 문제를 재현하는 MVCE(Minimal, Complete, and Verifying example)를 준비하면 빠르고 유용한 응답 가능성이 높아집니다.
도서관 | 설명 |
---|---|
EGL | OpenGL ES 또는 OpenVG와 같은 Khronos 렌더링 API와 기본 기본 플랫폼 창 시스템 간의 인터페이스입니다. |
KTX (크로노스 텍스처) | OpenGL®, Vulkan® 및 기타 GPU API용 텍스처를 위한 경량 컨테이너입니다. |
오픈CL | 개인용 컴퓨터, 서버, 모바일 장치 및 임베디드 플랫폼에서 볼 수 있는 다양한 프로세서의 크로스 플랫폼 병렬 프로그래밍을 위한 개방형 로열티 프리 표준입니다. |
OpenGL | 업계에서 가장 널리 채택된 2D 및 3D 그래픽 API로, 수천 개의 애플리케이션을 다양한 컴퓨터 플랫폼에 제공합니다. |
OpenGL ES | 콘솔, 휴대폰, 가전제품, 차량 등 임베디드 시스템의 모든 기능을 갖춘 2D 및 3D 그래픽을 위한 로열티 없는 크로스 플랫폼 API입니다. |
OpenXR | AR(증강 현실) 및 VR(가상 현실)(통칭 XR) 플랫폼 및 장치에 대한 고성능 액세스를 제공하는 로열티 없는 개방형 표준입니다. |
불칸 | PC 및 콘솔부터 휴대폰 및 임베디드 플랫폼에 이르기까지 다양한 장치에 사용되는 최신 GPU에 대한 고효율 크로스 플랫폼 액세스를 제공하는 차세대 그래픽 및 컴퓨팅 API입니다. |
도서관 | 설명 |
---|---|
GLFW | 여러 창을 만들고, 사용자 입력(키보드, 마우스, 게임 주변 장치)을 처리하고 컨텍스트를 관리합니다. 또한 다중 모니터 지원, 클립보드 액세스, 파일 끌어서 놓기 등의 기능도 제공됩니다. |
조트 | AWT 기본 인터페이스. |
기본 파일 대화 상자 확장 | 기본 파일 열기, 폴더 선택 및 파일 저장 대화 상자를 이식 가능하게 호출하는 작은 C 라이브러리입니다. |
작은 것 | 기본 대화 라이브러리. |
도서관 | 설명 |
---|---|
FMOD | 모든 게임에 사운드와 음악을 추가하기 위한 엔드투엔드 솔루션입니다. |
OpenAL | 게임 애플리케이션 및 기타 다양한 유형의 오디오 애플리케이션에 사용하기에 적합한 크로스 플랫폼 3D 오디오 API입니다. |
OpenAL 소프트 | OpenAL 3D 오디오 API의 LGPL 라이센스, 크로스 플랫폼, 소프트웨어 구현입니다. |
작 | 완전 개방형, 로열티 프리, 다용도가 뛰어난 오디오 코덱입니다. |
도서관 | 설명 |
---|---|
어심프 | 잘 알려진 다양한 3D 모델 형식을 균일한 방식으로 가져오는 휴대용 오픈 소스 라이브러리입니다. |
bgfx | 크로스 플랫폼, 그래픽 API에 구애받지 않는 "Bring Your Own Engine/Framework" 스타일 렌더링 라이브러리, 허용되는 BSD-2 조항 오픈 소스 라이선스에 따라 라이선스가 부여됩니다. |
프리타입 | 글꼴을 렌더링하는 데 무료로 사용할 수 있는 소프트웨어 라이브러리입니다. |
하프버즈 | 프로그램이 모든 쓰기 시스템 및 언어에 대해 일련의 유니코드 입력을 적절한 형식과 위치의 글리프 출력으로 변환할 수 있게 해주는 텍스트 모양 라이브러리입니다. |
메쉬최적화기 | 메시를 더 작고 빠르게 렌더링할 수 있게 해주는 메시 최적화 라이브러리입니다. |
msdfgen | 다중 채널 부호 있는 거리 필드 생성기입니다. |
나노SVG | 간단하고 멍청한 SVG 파서. |
나노VG | OpenGL을 위한 작은 앤티앨리어싱된 벡터 그래픽 렌더링 라이브러리입니다. |
핵클리어 | ANSI C로 작성되고 공개 도메인에 따라 라이센스가 부여된 최소 상태 즉시 모드 그래픽 사용자 인터페이스 툴킷입니다. |
par_octasphere | 구, 둥근 상자 및 캡슐에 대한 삼각형 메쉬를 생성합니다. |
par_shapes | 파라메트릭 표면과 기타 간단한 모양을 생성합니다. |
par_streamlines | 넓은 선과 곡선을 삼각 측량합니다. |
셰이더c | 셰이더 컴파일을 위한 라이브러리 모음입니다. |
SPIRV-크로스 | SPIR-V에서 리플렉션을 수행하고 SPIR-V를 다시 고급 언어로 분해하기 위한 라이브러리입니다. |
작은 OpenEXR | OpenEXR(.exr) 이미지를 로드하고 저장하는 작은 단일 헤더 전용 라이브러리입니다. |
투틀(AMD) | 기존 메시 전처리 기술을 개선하는 3D 삼각형 메시 최적화 라이브러리입니다. |
Vulkan 메모리 할당자 | Vulkan 메모리 할당 라이브러리를 쉽게 통합할 수 있습니다. |
요가 | Flexbox를 구현하는 오픈 소스 크로스 플랫폼 레이아웃 라이브러리입니다. |
도서관 | 설명 |
---|---|
LibOVR | Oculus SDK의 API입니다. |
오픈VR | 애플리케이션이 대상 하드웨어에 대한 특정 지식을 갖고 있지 않아도 여러 공급업체의 VR 하드웨어에 액세스할 수 있게 해주는 API 및 런타임입니다. |
도서관 | 설명 |
---|---|
stb_easy_font | 프레임 속도 등을 인쇄하기 위한 빠르고 배포하기 쉬운 비트맵 글꼴입니다. |
stb_이미지 | 파일/메모리에서 이미지 로드/디코딩: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | 좋은 품질로 이미지 크기를 더 크게/작게 조정하세요. |
stb_image_write | 디스크에 이미지 쓰기: PNG, TGA, BMP |
stb_perlin | Perlin 노이즈(3D 입력, 1D 출력)를 수정했습니다. |
stb_direct_pack | 괜찮은 품질의 간단한 2D 직사각형 패커입니다. |
stb_truetype | 트루타입 글꼴의 문자를 구문 분석, 디코딩 및 래스터화합니다. |
stb_vorbis | ogg vorbis 파일을 파일/메모리에서 부동/16비트 부호 있는 출력으로 디코딩합니다. |
도서관 | 설명 |
---|---|
쿠다 | GPU의 일반 컴퓨팅을 위해 NVIDIA가 개발한 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델입니다. |
hwloc | NUMA 메모리 노드, 소켓, 공유 캐시, 코어 및 동시 멀티스레딩을 포함한 현대 아키텍처의 계층적 토폴로지에 대한 이식 가능한 추상화입니다. |
제말록 | 조각화 방지 및 확장 가능한 동시성 지원을 강조하는 범용 malloc 구현입니다. |
libffi | 다양한 호출 규칙에 대한 이식 가능한 고급 프로그래밍 인터페이스입니다. |
자유분할 | 비용이 많이 드는 정수 나누기를 비교적 저렴한 곱셈 및 비트 시프트로 대체하는 라이브러리입니다. |
LLVM | 재사용 가능한 모듈식 컴파일러 및 툴체인 기술 모음입니다. |
LMDB | 매우 빠르고 메모리 효율적인 데이터베이스입니다. 메모리 매핑된 파일을 사용하면 표준 디스크 기반 데이터베이스의 지속성을 유지하면서 순수한 인메모리 데이터베이스의 읽기 성능을 갖습니다. |
LZ4 | 압축 및 압축 해제 속도에 초점을 맞춘 무손실 데이터 압축 알고리즘입니다. |
야옹 해시 | 매우 빠른 비암호화 해시입니다. |
ODBC | 애플리케이션이 다양한 DBMS(데이터베이스 관리 시스템)의 데이터에 액세스할 수 있게 해주는 AC 프로그래밍 언어 인터페이스입니다. |
원격 | 웹 브라우저에서 실행되는 뷰어와 함께 단일 C 파일에서 호스팅되는 실시간 CPU/GPU 프로파일러입니다. |
rpmalloc | C로 구현된 공개 도메인 크로스 플랫폼 잠금 없는 스레드 캐싱 16바이트 정렬 메모리 할당자입니다. |
xx해시 | RAM 속도 제한으로 실행되는 매우 빠른 해시 알고리즘입니다. |
Z표준(zstd) | zlib 수준의 실시간 압축 시나리오와 더 나은 압축 비율을 목표로 하는 빠른 무손실 압축 알고리즘입니다. |
바인딩 사용에는 해당 라이센스 조건이 적용됩니다.
LWJGL은 우리 집단에 기여하고 기부하는 모든 사람들 덕분에 존재합니다.