개요
OpenGL(Open Graphics Library)은 2차원 및 3차원 벡터 그래픽스를 렌더링하기 위한 언어 독립적, 크로스 플랫폼 애플리케이션 프로그래밍 인터페이스(API)이다. GPU(그래픽 처리 장치)와 상호작용하여 하드웨어 가속 렌더링을 구현하는 데 주로 사용되며, CAD(컴퓨터 지원 설계), 비디오 게임, 과학적 시각화, 가상 현실, 비행 시뮬레이터 등 다양한 분야에서 쓰인다[1][2][3]. 실리콘 그래픽스(SGI)가 1991년 개발을 시작해 1992년 6월 30일 처음 공개했으며[1][2][3], 2006년 7월부터 비영리 기술 연합체인 크로노스 그룹(Khronos Group)이 사양 관리를 맡고 있다[2][3]. 최신 핵심 사양인 OpenGL 4.6은 2017년 7월 31일 발표되었다[2][3].
특징과 기능
설계 철학과 API 구조
OpenGL 사양은 2D·3D 그래픽 그리기를 위한 추상 API를 정의한다. CPU만으로 순수 소프트웨어 구현도 가능하지만, 대부분 GPU 하드웨어 가속을 전제로 설계되었다[2][3]. API는 클라이언트 프로그램이 호출하는 함수 집합과 이름이 붙은 정수 상수(예: GL_TEXTURE_2D = 3553) 집합으로 구성된다. 함수 정의는 C 언어와 비슷해 보이지만 언어 독립적이라 다양한 언어 바인딩이 존재한다[2][3].
대표적 바인딩으로는 웹 브라우저 3D 렌더링용 WebGL(OpenGL ES 2.0 기반, 자바스크립트), 윈도우용 WGL, X11용 GLX, macOS용 CGL, iOS·안드로이드의 C/자바 바인딩 등이 있다[2][3]. 크로스 플랫폼이기도 하여, 사양에는 OpenGL 컨텍스트 획득·관리 방법이 명시되지 않고 하부 윈도 시스템 세부 사항으로 남겨둔다. 따라서 OpenGL은 렌더링에만 집중하며 입력·오디오·윈도잉 API는 제공하지 않는다[2][3].
렌더링 파이프라인과 셰이딩 언어
초기 OpenGL은 고정 기능(fixed-function) 파이프라인을 사용했으나, OpenGL 2.0(2004년 9월 7일)에서 3D랩스(3Dlabs) 제안으로 C 스타일 고급 셰이딩 언어 GLSL(OpenGL Shading Language, GLslang) 1.10이 도입되어 정점·프래그먼트 프로세서를 셰이더로 대체할 수 있게 되었다[2][3]. GLSL 설계는 당시 하드웨어 한계에 타협하지 않고 미래 지향적 목표를 세운 것으로 평가받는다[2][3]. 이후 버전마다 GLSL 버전도 함께 올라갔다(GLSL 1.20~1.50, 3.30, 4.00~4.60 등)[2][3]. OpenGL 4.6부터는 중간 표현어 SPIR-V 셰이더도 지원한다[2].
버전별 주요 변화
| 버전 | 발표일 | 주요 내용 |
|------|--------|-----------|
| 1.0 | 1992-06-30 | 최초 공개[2][3] |
| 2.0 | 2004-09-07 | GLSL 1.10 도입, 프로그래머블 셰이더 지원[2][3] |
| 2.1 | 2006-07-02 | 픽셀 버퍼 객체, sRGB 텍스처, GLSL 1.20[2][3] |
| 3.0 | 2008-08-11 | 구식화(deprecation) 메커니즘 도입, 전방 호환 컨텍스트/전체 컨텍스트 구분, 고정 기능·즉시 모드·디스플레이 리스트·인덱스 컬러 등 구식 표시, GLSL 1.30[2][3] |
| 3.1 | 2009-03-24 | 3.0 구식 기능(굵은 선 제외) 완전 제거, 코어/호환 프로필 분리는 아직 없음, GLSL 1.40[2][3] |
| 3.2 | 2009-08-03 | 코어 프로필·호환성 프로필로 사양 분리, GLSL 1.50[2][3] |
| 3.3 | 2010-03-11 | 4.0 기능을 구형 하드웨어에서도 쓸 수 있게 백포트, 새 블렌딩 함수·샘플러 객체·텍스처/정점 포맷, GLSL 3.30(버전 번호 OpenGL과 일치)[2][3] |
| 4.0 | 2010-03-11 | Direct3D 11급 하드웨어 대상, 테셀레이션 등 다수 미세 확장 포함[2][3] |
| 4.1 | 2010-07-26 | 최소 최대 텍스처 크기 16384×16384, OpenGL ES 2.0 호환성 개선, 다중 뷰포트, macOS 마지막 코어 프로필[2][3] |
| 4.2 | 2011-08-08 | 원자적 카운터·이미지 load/store/read-modify-write, GPU 정점 처리 데이터 다중 인스턴스 드로잉, 압축 텍스처 부분 수정 지원[2][3] |
| 4.3 | 2012-08-06 | 컴퓨트 셰이더, 셰이더 스토리지 버퍼 객체, ETC2/EAC 텍스처 압축 표준화, OpenGL ES 3.0 완전 호환, 디버그 출력, 텍스처 뷰, 메모리 보안 강화[2][3] |
| 4.4 | 2013-07-22 | 버퍼 객체 사용 제어 강화, 비동기 쿼리, 셰이더 인터페이스 변수 레이아웃 제어 확대, 다중 객체 동시 바인딩[2][3] |
| 4.5 | 2014-08-11 | Direct State Access(DSA)로 바인딩 없이 상태 조회/수정, Flush Control로 멀티스레드 성능 향상, 견고성(Robustness) 강화, OpenGL ES 3.1 호환[2][3] |
| 4.6 | 2017-07-31 | 효율적 GPU 기하 처리·셰이더 실행(AZDO), 통계·오버플로 쿼리·카운터, 에러 처리 컨텍스트 제거로 성능 향상, 폴리곤 오프셋 클램핑, SPIR-V, 향상된 비등방성 필터링, 기존 ARB/EXT 확장 11개 코어 포함[2][3] |
확장 메커니즘
핵심 API 외에 GPU 벤더는 확장으로 추가 기능을 제공할 수 있다. 확장은 새 함수·상수 도입, 기존 함수 제한 완화·제거가 가능하며, 벤더는 크로노스 그룹 전체 동의 없이 맞춤형 API를 노출할 수 있어 유연성이 높다[2][3]. 모든 확장은 OpenGL 레지스트리에 수집·정의되며, 새 버전 기능은 보통 널리 구현된 ARB·EXT 확장을 통합해 만든다[2][3].
문서와 레퍼런스
OpenGL ARB는 사양과 함께 표지 색으로 불리는 매뉴얼을 펴냈다[2][3].
레드 북(Red Book): 《OpenGL Programming Guide》 9판, ISBN 978-0-134-49549-1, OpenGL 4.5 with SPIR-V 공식 가이드[2][3].
오렌지 북(Orange Book): 《OpenGL Shading Language》 3판, ISBN 0-321-63763-1, GLSL 튜토리얼·참조서[2][3].
그린 북(Green Book): 《OpenGL Programming for the X Window System》, ISBN 978-0-201-48359-8, X11·GLUT 다룸(OpenGL 2.0 이전)[2][3].
블루 북(Blue Book): 《OpenGL Reference Manual》 4판, ISBN 0-321-17383-X, 유닉스 매뉴얼 페이지 인쇄본, 이상적 구현 구조 포스터 포함[2][3].
알파 북(Alpha Book): 《OpenGL Programming for Windows 95 and Windows NT》, ISBN 0-201-40709-4, 윈도우 인터페이스 다룸[2][3].
공식 웹사이트에서도 레퍼런스 페이지, 확장 레지스트리, FAQ, 샘플 코드, 튜토리얼, 벤치마크, 메일링 리스트 등을 제공한다[4].
관련 라이브러리와 툴킷
OpenGL Utility Library(GLU): 초기 버전과 함께 배포된 동반 라이브러리로 테셀레이션, 밉맵 생성, 기본 도형 생성 등 당시 하드웨어에서 지원하기 힘든 기능을 제공했다. 1998년 마지막 업데이트 뒤 현재는 구식 OpenGL 기능에 의존해 사실상 쓰이지 않는다[2][3].
컨텍스트·윈도 툴킷: OpenGL 컨텍스트 생성은 OS마다 복잡하고 달라, 여러 라이브러리가 자동 생성을 지원한다.
GLFW: 크로스 플랫폼 윈도잉·키보드·마우스·조이스틱 처리, 게임 지향[2][3].
freeglut: GLUT API 슈퍼셋, 더 안정적·최신, 크로스 플랫폼 윈도잉·키보드·마우스[2][3].
GLUT: 초기 윈도잉 핸들러, 더 이상 유지보수 안 함[2][3].
SDL(Simple DirectMedia Layer), Allegro 5, SFML: 입력·사운드 등 멀티미디어 기능과 함께 OpenGL 윈도 생성 지원[2][3].
Qt, FLTK, wxWidgets: 위젯 툴킷이면서 OpenGL 윈도 생성·관리 헬퍼 제공(Qt는 데스크톱 GL과 OpenGL ES 차이까지 추상화)[2][3].
확장 로딩 라이브러리: 확장 식별·로드 부담을 덜어주는 라이브러리들.
GLEE(OpenGL Easy Extension library), GLEW(OpenGL Extension Wrangler Library), glbinding 등[2][3].
Java OpenGL, PyOpenGL, WebGL 등 언어 바인딩 대부분도 확장을 자동 로드[2][3].
구현체
Mesa 3D: OpenGL 오픈소스 구현체. 순수 소프트웨어 렌더링 가능, Direct Rendering Infrastructure(DRI)로 BSD·리눅스 등에서 하드웨어 가속도 사용. 버전 20.0부터 OpenGL 4.6 구현[2][3].
애플 구현: iOS 12·macOS 10.14 모하비에서 지원 중단, macOS 14 소노마(애플 실리콘 포함) 시점까지 여전히 사용 가능. 마지막 지원 버전은 2011년 OpenGL 4.1. MoltenGL(MoltenVK 제작사 Molten의 독점 라이브러리)로 OpenGL 호출을 메탈로 변환 가능[3].
벌컨 위 구현: 구글 ANGLE 벌컨 백엔드(2020년 7월 OpenGL ES 3.1 준수 달성), Mesa 3D의 Zink 드라이버[3].
마이크로소프트 Arm용 윈도우 11: Mesa Gallium 기반 DirectX 12 위 구현체 GLon12로 OpenGL 3.3 지원 추가[3].
지원 플랫폼과 하드웨어 요구사항
주요 버전별 하드웨어 지원 기준(자료 기준)은 다음과 같다[2][3].
OpenGL 3.0: 엔비디아 지포스 8 시리즈 이상, ATI 라데온 HD 2000 시리즈 이상, 인텔 샌디브리지 HD 그래픽 이상.
OpenGL 4.0: 엔비디아 지포스 400 시리즈 이상, AMD 라데온 HD 5000 시리즈 이상(일부 TeraScale GPU는 FP64 셰이더 에뮬레이션), 인텔 아이비브리지 HD 그래픽 이상.
OpenGL 4.3: AMD 라데온 HD 5000 시리즈 이상, 인텔 하스웰 HD 그래픽 이상(메사: 스텐실 텍스처링 없는 아이비브리지, 하스웰 이상), 엔비디아 지포스 400 시리즈 이상, 가상 머신용 VIRGL 에뮬레이션(메사 20부터 4.3+).
OpenGL 4.4: AMD 라데온 HD 5000 시리즈 이상, 인텔 브로드웰 HD 그래픽 이상(메사: 하스웰 이상), 엔비디아 지포스 400 시리즈 이상, 테그라 K1.
OpenGL 4.5: AMD 라데온 HD 5000 시리즈 이상, 인텔 브로드웰 HD 그래픽 이상(메사: 하스웰 이상), 엔비디아 지포스 400 시리즈 이상, 테그라 K1·X1.
OpenGL 4.6: AMD 라데온 HD 7000 시리즈 이상(일부 TeraScale FP64 에뮬), 인텔 스카이레이크 이상, 엔비디아 지포스 400 시리즈 이상.
- 드라이버 지원: 리눅스 메사 19.2(인텔 브로드웰+), 20.0(AMD 라데온), 21.1(Zink·LLVMpipe), 엔비디아 케플러+ 진행 중. 윈도우 7 SP1/10 1803 AMD Adrenalin 18.4.1(라데온 HD 7700+/8500+), 2018년 4월. 윈도우 10 인텔 26.20.100.6861, 2019년 5월. 엔비디아 지포스 397.31(윈도우 7/8/10 x86-64만, 32비트 미지원), 2018년 4월.
라이선스·요금
OpenGL 사양 자체는 크로노스 그룹이 관리하는 공개 표준이며, 로열티 없는 라이선스로 누구나 구현·사용할 수 있다. 단, 특정 하드웨어 벤더의 드라이버나 독점 확장 라이브러리(MoltenGL 등)는 별도 라이선스 조건을 가질 수 있다[2][3][4].
사용 게임
자료에 명시된 게임·엔진 사례는 다음과 같다[2][3].
이드 소프트웨어 엔진: GLQuake, 둠 시리즈(초기), 퀘이크 II 엔진(id Tech 2, 첫 OpenGL 라이선스 사용), 이드 테크 6(벌컨 첫 지원), 이드 테크 7(2016년 벌컨으로 완전 전환).
밸브: 도타 2(2023년 3월 OpenGL 지원 제거, 벌컨만 유지).
Atypical Games: 삼성 지원으로 애플 외 플랫폼에서 벌컨으로 엔진 전환.
기타: 1990년대 후반~2000년대 다수 CAD 소프트웨어(블렌더 등)와 게임에서 표준으로 쓰임[3].
평가
장점과 지속적 관련성
크로스 플랫폼 호환성으로 거의 모든 하드웨어 벤더 지원[2][3].
지속적 확장·드라이버 최적화로 기능 보완 가능[2][3].
ANGLE, Zink 등 호환성 계층으로 벌컨·메탈 위에서 효율적 실행 가능, 점진적 전환 경로 제공[2][3].
언어 독립적 설계로 다양한 프로그래밍 언어에서 사용 용이[2][3].
방대한 기존 코드베이스·문서·교육 자료·커뮤니티 축적[2][3][4].
한계와 비판
크로노스 그룹이 2017년 4.6 이후 새 버전 발표 중단, 사실상 유지보수 모드[2][3].
하드웨어 가속 광선 추적, GPU 비디오 디코딩, DLSS·FSR 같은 고급 안티앨리어싱, 메시 셰이더(2025년 확장 전까지) 등 현대 GPU 기술 표준 미지원[2][3].
애플 플랫폼에서 지원 중단(deprecation), 메탈 강제 권장으로 맥·iOS 개발자 이탈[2][3].
주요 게임 엔진·스튜디오(이드 소프트웨어, 밸브, Atypical Games)가 벌컨으로 이전[2][3].
OpenGL 3.0 롱스피크(Longs Peak) 제안 당시 전면적 API 재설계가 약속되었으나, 최종 사양은 구식화 메커니즘만 도입하고 객체 모델 등 핵심 변경은 배제해 개발자 커뮤니티 반발 유발(일부는 DirectX 전환 공언)[2][3].
컨텍스트 생성·관리가 OS별로 달라 별도 툴킷 필수, 초보자 진입 장벽 존재[2][3].
벌컨과의 관계
벌컨은 "차세대 OpenGL 이니셔티브"(glNext)라는 이름으로 시작된 전면적 재설계로, OpenGL과 OpenGL ES를 하나의 공통 API로 통합하되 기존 버전과 하위 호환되지 않게 만든 차세대 그래픽·컴퓨트 API이다[2][3]. OpenGL이 고수준 상태 머신 추상화를 제공하는 반면, 벌컨은 저수준 명시적 제어·멀티스레드 친화적 설계·드라이버 오버헤드 최소화를 목표로 한다. 크로노스 그룹은 벌컨 개발에 집중하며 OpenGL 신규 버전 개발을 중단했다[2][3].
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.