맨위로가기

LWJGL

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

LWJGL은 Java에서 네이티브 라이브러리에 접근하기 위한 오픈 소스 라이브러리이다. 2002년에 개발이 시작되어 2007년 첫 공식 릴리스가 이루어졌으며, 2016년에는 LWJGL 3이 출시되었다. LWJGL은 JNI를 통해 C 코드를 사용하며, 다양한 그래픽, 오디오, 입력, 병렬 컴퓨팅 API에 대한 바인딩을 제공하여 개발자가 여러 플랫폼에서 활용할 수 있도록 돕는다. 마인크래프트, 프로젝트 좀보이드 등 다양한 게임에서 사용된다.

더 읽어볼만한 페이지

  • 자바 API - 자바 암호화 확장
  • 자바 API - 표준 위젯 툴킷
    표준 위젯 툴킷(SWT)은 자바 GUI 툴킷으로, 네이티브 룩앤필과 고성능을 위해 윈도 시스템의 그래픽 요소를 직접 사용하며, 이클립스 IDE의 기반 기술로 IBM에 의해 개발되었다.
  • 자바 라이브러리 - 아파치 루씬
    아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다.
  • 자바 라이브러리 - 구글 구아바
    구글 구아바는 구글에서 개발한 오픈 소스 자바 라이브러리로, 자바 컬렉션 프레임워크 확장, 캐싱, I/O, 문자열 처리 등 다양한 유틸리티 기능 제공, 함수형 프로그래밍 스타일 컬렉션 적용을 통해 자바 개발 생산성 향상에 기여한다.
  • 비디오 게임 개발 소프트웨어 - 앨리스 (소프트웨어)
    앨리스는 교육용 프로그래밍 소프트웨어로, 드래그 앤 드롭 방식을 통해 객체 지향 프로그래밍을 배우도록 설계되었으며, 스토리텔링을 활용하여 다양한 사용자들이 프로그래밍에 접근하도록 돕는다.
  • 비디오 게임 개발 소프트웨어 - 픽셀 게임 메이커 MV
    픽셀 게임 메이커 MV는 2D 액션 게임 제작 전용 츠쿠르로, 프로그래밍 없이 인디 게임 개발을 쉽게 할 수 있도록 설계되었으며, 2018년에 얼리 액세스 버전이 출시되어 2019년 Steam에 정식 출시되었다.
LWJGL - [IT 관련 정보]에 관한 문서
기본 정보
LWJGL 로고
LWJGL 로고
저자캐스피언 프린스
개발자이오아니스 트사크피니스
출시일2007년 2월 4일
최신 버전3.3.4
최신 출시일2024년 7월 17일
프로그래밍 언어Java
C
Kotlin
운영 체제Linux
macOS
Windows
FreeBSD
플랫폼자바 플랫폼
장르자유 컴퓨터 라이브러리
라이선스BSD, 일부 바인딩은 다른 라이선스
웹사이트lwjgl.org
저장소https://github.com/lwjgl

2. 역사

J2SE 1.4가 출시되면서 2002년에 라이브러리 개발이 시작되었으며, 새롭게 추가된 논블로킹 I/O 작업과 힙 외부 메모리 접근을 활용하였다. 이러한 JDK에 대한 추가 사항을 통해 JDK의 일부가 아닌 네이티브 메모리 및 라이브러리에 대한 더 나은 접근이 가능해졌다. 라이브러리의 첫 번째 공식 릴리스는 2007년 2월 4일에 이루어졌다.[1]

2014년 11월 13일, 버전 3가 발표되었으며, 2015년 4월 27일에 알파 버전으로 출시되었고 LWJGL을 완전히 다시 작성한 것이다.[2][3][4] GLFW, EGL 및 Objective-C를 포함한 많은 새로운 바인딩이 추가되었다. Oculus Rift 개발에 대한 지원도 LibOVR 바인딩과 함께 추가되었다.[5][4] 새로운 버전은 3년 반 이상 개발 끝에 2016년 6월 4일에 출시되었다.[6]

3. 바인딩

LWJGL은 다양한 기능을 제공하기 위해 여러 라이브러리에 대한 바인딩을 제공한다. 바인딩은 JNI를 통해 네이티브 C 코드에 접근하는 방식으로 이루어진다.[5][4][7] 각 네이티브 라이브러리에 대한 바인딩은 서로 다른 모듈로 존재하므로, 개발자는 특정 프로그램에 필요한 것만 사용하여 사용자 정의 빌드를 할 수 있다.

LWJGL에서 제공하는 주요 바인딩은 다음과 같다.

제공되는 바인딩[16][17]
바인딩설명
EGL크로노스 렌더링 API와 기반이 되는 네이티브 플랫폼 윈도 시스템 간의 인터페이스.
OpenCL크로스 플랫폼 병렬 컴퓨팅용 API.
OpenGL대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체.
OpenGL ES휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL.
벌컨차기 크로스 플랫폼 3D 그래픽스 API.
GLFWOpenGL 및 벌컨 컨텍스트, 사용자 입력을 관리하는데 필요한 창 관리 라이브러리.
JAWTAWT 네이티브 인터페이스.
nfd크기가 작은 크로스 플랫폼 네이티브 파일 다이얼로그 라이브러리.
tinyfd크기가 작은 네이티브 다이얼로그 라이브러리.
OpenAL3차원 오디오 API.
OpenAL SoftOpenAL의 자유 라이선스 소프트웨어 구현체.
bgfx다중 그래픽스 백엔드를 지원하는 크로스 플랫폼 렌더링 라이브러리.
LibOVR오큘러스 리프트 SDK의 API.
NanoVGOpenGL을 사용한 2D 벡터 그래픽스 렌더링 라이브러리.
Nuklear단순 GUI 라이브러리.
par shapes파라메트릭 및 기타 단순 도형 생성기.
STB이미지, 사운드, 글꼴을 로드하기 위한 가벼운 싱글 파일 라이브러리.
dyncall포터블한 방식으로 동적으로 C 함수를 호출하기 위한 라이브러리.
C 동적 메모리 할당저급(Low-level) 메모리 관리.
LMDB메모리 맵 파일을 이용한 고속 데이터베이스 라이브러리.
xxHash고속 해시 알고리즘.
VMA벌컨 그래픽스 API용 메모리 할당자.



하위 섹션에서 이미 언급된 바인딩들에 대한 내용은 간략하게 표로 작성하여 중복을 피했다.

버전 3.1부터 LWJGL은 51개의 모듈로 완전히 분리되어 개별적으로 다운로드하여 사용할 수 있다. 이 과정을 더 쉽게 만들기 위해 프로젝트는 온라인 빌드 구성기를 제공하며, 이를 통해 사용자는 모듈의 사용자 정의 조합을 다운로드하고, 기존 프로젝트에서 쉽게 사용할 수 있도록 Maven 및 Gradle 구성 파일을 자동으로 생성할 수 있다.[10][11][12]

3. 1. Khronos API

LWJGL은 여러 크로노스 API에 대한 바인딩을 제공한다. 다음은 그 목록이다.[16][17]

제공되는 바인딩
바인딩설명
EGL크로노스 렌더링 API와, 기반이 되는 네이티브 플랫폼 윈도 시스템 간의 인터페이스.
OpenCL크로스 플랫폼 병렬 컴퓨팅용 API.
OpenGL대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체.
OpenGL ES휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL.
벌컨차기 크로스 플랫폼 3D 그래픽스 API.


3. 2. 디스플레이 및 입력

GLFW는 OpenGL 및 Vulkan 컨텍스트와 사용자 입력을 처리하는 데 필요한 윈도우 관리 라이브러리이다.[8][5] JAWT는 AWT 네이티브 인터페이스이다.[8][5] nfd는 소규모 크로스 플랫폼 네이티브 파일 대화 상자 라이브러리이며,[8][5] tinyfd는 소규모 네이티브 대화 상자 라이브러리이다.[8][5]

3. 3. 오디오

LWJGL은 3차원 오디오 API인 OpenAL 바인딩을 제공하며, ALC 및 기타 확장 기능도 지원한다.[16][17] OpenAL Soft는 OpenAL의 자유 라이선스 소프트웨어 구현체이다.

3. 4. 그래픽

LWJGL은 여러 그래픽 API에 대한 바인딩을 제공하여 개발자가 3D 그래픽을 구현하고, 사용자 인터페이스를 만들고, 2D 벡터 그래픽을 렌더링할 수 있도록 지원한다.

LWJGL에서 제공하는 그래픽 관련 바인딩은 다음과 같다.[16][17]

LWJGL에서 제공하는 그래픽 바인딩
바인딩설명참고
OpenGL대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체.대부분의 확장 기능들이 지원되지만 요청에 따라 덜 유명한 확장 기능들이 추가될 수 있다.
OpenGL ES휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL.
벌컨차기 크로스 플랫폼 3D 그래픽스 API.
NanoVGOpenGL을 사용한 2D 벡터 그래픽스 렌더링 라이브러리.
Nuklear단순 GUI 라이브러리.



이 외에도, 다음과 같은 그래픽 관련 바인딩을 제공한다.[8][5]


  • Assimp: 다양한 3D 모델 형식을 가져오기 위한 휴대용 오픈 소스 라이브러리이다.
  • bgfx: 여러 그래픽 백엔드를 지원하는 크로스 플랫폼 렌더링 라이브러리이다.
  • LibOVR: 오큘러스 리프트 SDK의 API이다.
  • par shapes: 파라메트릭 및 기타 단순 도형 생성기이다.
  • STB: 이미지, 사운드, 글꼴을 로드하기 위한 가벼운 싱글 파일 라이브러리이다.

3. 5. 기타

LWJGL은 JNI를 통해 네이티브 C 코드에 접근한다. 각 네이티브 라이브러리에 대한 바인딩은 서로 다른 모듈로 존재하므로, 개발자는 특정 프로그램에 필요한 것만 사용하여 사용자 정의 빌드를 할 수 있다.[5][4][7]

유틸리티 클래스는 순수 Java로 작성되지만, 대부분의 바인딩 클래스는 Kotlin으로 구현된 사용자 정의 생성기에 의해 자동으로 생성된다.[8][9]

버전 3.1부터 LWJGL은 51개의 모듈로 완전히 분리되어 개별적으로 다운로드하여 사용할 수 있다. 이 과정을 더 쉽게 만들기 위해 프로젝트는 온라인 빌드 구성기를 제공하며, 이를 통해 사용자는 모듈의 사용자 정의 조합을 다운로드하고, 기존 프로젝트에서 쉽게 사용할 수 있도록 Maven 및 Gradle 구성 파일을 자동으로 생성할 수 있다.[10][11][12]

LWJGL에서 제공하는 바인딩은 다음과 같다.[16][17]

LWJGL 제공 바인딩[16][17]
바인딩설명
EGL크로노스 렌더링 API와, 기반이 되는 네이티브 플랫폼 윈도 시스템 간의 인터페이스.
OpenCL크로스 플랫폼 병렬 컴퓨팅용 API.
OpenGL대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체. 대부분의 확장 기능들이 지원되지만 요청에 따라 덜 유명한 확장 기능들이 추가될 수 있다.
OpenGL ES휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL.
벌컨차기 크로스 플랫폼 3D 그래픽스 API.
GLFWOpenGL 및 벌컨 컨텍스트, 사용자 입력을 관리하는데 필요한 창 관리 라이브러리.
JAWTAWT 네이티브 인터페이스.
nfd크기가 작은 크로스 플랫폼 네이티브 파일 다이얼로그 라이브러리.
tinyfd크기가 작은 네이티브 다이얼로그 라이브러리.
OpenAL3차원 오디오 API. ALC 및 기타 확장 지원함.
OpenAL SoftOpenAL의 자유 라이선스 소프트웨어 구현체.
bgfx다중 그래픽스 백엔드를 지원하는 크로스 플랫폼 렌더링 라이브러리.
LibOVR오큘러스 리프트 SDK의 API.
NanoVGOpenGL을 사용한 2D 벡터 그래픽스 렌더링 라이브러리.
Nuklear단순 GUI 라이브러리.
par shapes파라메트릭 및 기타 단순 도형 생성기.
STB이미지, 사운드, 글꼴을 로드하기 위한 가벼운 싱글 파일 라이브러리.
dyncall포터블한 방식으로 동적으로 C 함수를 호출하기 위한 라이브러리.
C 동적 메모리 할당저급(Low-level) 메모리 관리.
LMDB메모리 맵 파일을 이용한 고속 데이터베이스 라이브러리.
xxHash고속 해시 알고리즘.
VMA벌컨 그래픽스 API용 메모리 할당자


4. 저명한 사용

LWJGL을 사용한 저명한 게임 및 프로젝트는 다음과 같다.

참조

[1] 웹사이트 LWJGL 1.0 Released http://forum.lwjgl.o[...] 2007-02-04
[2] 웹사이트 Welcome to LWJGL 3 https://blog.lwjgl.o[...] 2014-11-13
[3] 웹사이트 LWJGL 3 Roadmap https://github.com/L[...] 2015-06-02
[4] 웹사이트 LWJGL 3.0.0a released https://blog.lwjgl.o[...] 2015-04-27
[5] 웹사이트 Official website https://www.lwjgl.or[...] 2015-08-14
[6] 웹사이트 LWJGL 3.0.0 Released! https://blog.lwjgl.o[...] 2016-06-04
[7] 웹사이트 Bindings FAQ https://github.com/L[...] 2014-12-27
[8] 웹사이트 LWJGL/lwjgl3 https://github.com/L[...] 2016-08-13
[9] 웹사이트 lwjgl3/doc – Generator https://github.com/L[...] 2015-08-11
[10] 뉴스 LWJGL 3.1.0 Released! https://blog.lwjgl.o[...] 2016-10-30
[11] 뉴스 Minecraft unblocked https://minecraftfor[...] 2023-11-16
[12] 웹사이트 Download – LWJGL https://www.lwjgl.or[...] 2016-11-11
[13] 웹사이트 Minecraft Attributions {{!}} Minecraft https://minecraft.ne[...] 2020-07-09
[14] 웹사이트 APZDTISA #3: This time with LIVE MULTIPLAYER! https://projectzombo[...] 2014-02-17
[15] Github Releases · LWJGL/lwjgl3 · GitHub https://github.com/L[...]
[16] 웹인용 LWJGL/lwjgl3 https://github.com/L[...] 2016-08-13
[17] 웹인용 Official website https://www.lwjgl.or[...] 2015-08-14
[18] 웹인용 minecraft.net – Credits https://minecraft.ne[...] 2016-08-06



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com