오픈GL
OpenGL![]() | |
![]() | |
원저작자 | 실리콘 그래픽스 |
---|---|
개발자 | 크로노스 그룹 (이전 ARB) |
초기 릴리즈 | 1992년 6월 30일, | 전(
안정된 릴리스 | 4.6 / 2017년 7월 , 전( |
기입처 | C[1] |
후계자 | 불칸 |
유형 | 3D 그래픽스 API |
면허증. |
|
웹 사이트 | www |
OpenGL(Open Graphics[3] Library)은 2D 및 3D 벡터 그래픽을 렌더링하기 위한 크로스 플랫폼 애플리케이션 프로그래밍 인터페이스(API)입니다.API는 일반적으로 GPU(그래픽 처리 장치)와 상호 작용하여 하드웨어 가속 렌더링을 구현하기 위해 사용됩니다.
SGI(Silicon Graphics, Inc.)는 1991년에 OpenGL 개발을 시작하여 1992년 [4][5]6월 30일에 출시했습니다.애플리케이션에서는 OpenGL을 컴퓨터 지원 설계(CAD), 가상 현실, 과학 시각화, 정보 시각화, 비행 시뮬레이션 및 비디오 게임 분야에서 광범위하게 사용하고 있습니다.2006년 이후 OpenGL은 비영리 기술 컨소시엄 Khronos [6]Group에 의해 관리되고 있습니다.
설계.
OpenGL 사양은 2D 및 3D 그래픽을 그리기 위한 추상 API를 기술합니다.API는 전체적으로 소프트웨어로 구현될 수 있지만 대부분 또는 전체적으로 하드웨어로 구현되도록 설계되어 있습니다.
API는 이름 있는 정수 상수 집합(예를 들어 10진수 3553에 대응하는 상수 GL_TECTURE_2D)과 함께 클라이언트 프로그램에 의해 호출될 수 있는 함수 집합으로 정의됩니다.함수 정의는 표면적으로는 프로그래밍 언어 C의 정의와 유사하지만 언어에 의존하지 않습니다.이와 같이 OpenGL에는 많은 언어 바인딩이 있습니다.가장 주목할 만한 것은 JavaScript 바인딩 WebGL(Web 브라우저 내에서 3D 렌더링을 하기 위한 API), C 바인딩 WGL, GLX 및 CGL, IOS 및 Java에 의해 제공되는 C 바인딩입니다.
OpenGL은 언어에 의존하지 않을 뿐만 아니라 크로스 플랫폼도 지원합니다.이 사양에서는 OpenGL 컨텍스트의 취득 및 관리에 대해 아무런 언급도 하지 않고 있으며, 이는 기본 윈도우 시스템의 세부 사항으로 남아 있습니다.같은 이유로 OpenGL은 입력, 오디오 또는 윈도우와 관련된 API를 제공하지 않고 렌더링에만 관심을 가지고 있습니다.
발전
OpenGL은 적극적으로 개발된 API입니다.OpenGL 사양의 새로운 버전은 Khronos Group에 의해 정기적으로 공개되며, 각각 API를 확장하여 다양한 신기능을 지원합니다.각 버전의 세부 사항은 그래픽 카드 제조사, 운영 체제 디자이너, 모질라,[7] 구글 등 일반 기술 회사 등 그룹 구성원 간의 합의에 따라 결정됩니다.
핵심 API에 필요한 기능과 더불어 그래픽 처리 장치(GPU) 벤더는 확장 형태로 추가 기능을 제공할 수 있습니다.확장은 새로운 함수와 상수를 도입할 수 있으며 기존 OpenGL 함수에 대한 제한을 완화하거나 제거할 수 있습니다.벤더는 다른 벤더나 Khronos 그룹 전체의 지원을 필요로 하지 않고 확장 기능을 사용하여 커스텀 API를 공개할 수 있습니다.이것에 의해, OpenGL 의 유연성이 큰폭으로 향상됩니다.모든 확장은 OpenGL [8]레지스트리에 수집되어 정의됩니다.
각 내선번호는 해당 내선번호를 개발한 회사의 이름에 따라 짧은 식별자와 관련지어집니다.예를 들어 Nvidia의 식별자는 NV로 확장명의 일부입니다.GL_NV_half_float
, 상수GL_HALF_FLOAT_NV
, 및 기능glVertex2hNV()
여러 벤더가 동일한 API를 사용하여 동일한 기능을 구현하기로 합의할 경우 EXT라는 식별자를 사용하여 공유 확장을 출시할 수 있습니다.[9]이러한 경우 Khronos 그룹의 아키텍처 검토 위원회가 확장에 명시적인 승인을 제공할 수도 있으며, 이 경우 식별자 ARB가 사용됩니다.[10]
OpenGL의 각 새로운 버전에서 도입된 기능은 일반적으로 널리 구현된 여러 확장 기능, 특히 ARB 또는 EXT 유형의 확장 기능의 결합으로 구성됩니다.
문서
OpenGL Architecture Review Board는 API 변경을 추적하기 위해 업데이트된 사양과 함께 일련의 매뉴얼을 발표했습니다.일반적으로 커버의 색상으로 나타냅니다.
- 레드북
- OpenGL 프로그래밍 가이드, 제9판 ISBN978-0-134-49549-1
- SPER-V를 탑재한 OpenGL 버전 4.5 학습 공식 가이드
- 오렌지북
- OpenGL Shading Language, 제3판ISBN 0-321-63763-1
- GLSL용 튜토리얼 및 참조서.
역사서적 (OpenGL 2.0 이전):
- 그린북
- X Window 시스템용 OpenGL 프로그래밍.ISBN 978-0-201-48359-8
- X11 인터페이스와 OpenGL Utility Toolkit(GLUT)에 관한 책.
- 블루북
- OpenGL 레퍼런스 매뉴얼, 제4판.ISBN 0-321-17383-X
- 기본적으로 OpenGL용 Unix 매뉴얼(man) 페이지의 하드 카피 인쇄물입니다.
- 이상적인 OpenGL 구현 구조를 보여주는 포스터 크기의 접이식 다이어그램이 포함되어 있습니다.
- 알파북(흰색 표지)
- Windows 95 및 Windows NT용 OpenGL 프로그래밍.ISBN 0-201-40709-4
- OpenGL과 Microsoft Windows의 인터페이스에 관한 책입니다.
OpenGL의 매뉴얼은 공식 [11]웹 페이지를 통해서도 이용할 수 있습니다.
관련 라이브러리
OpenGL의 초기 버전은 OpenGL Utility Library(GLU)라고 불리는 동반 라이브러리와 함께 출시되었습니다.테셀링, mipmap 및 원시 형태 생성 등 현대 하드웨어에서는 지원되지 않는 단순하고 유용한 기능을 제공했습니다.GLU 사양은 1998년에 마지막으로 업데이트되었으며 현재는 사용되지 않는 OpenGL 기능에 의존합니다.
컨텍스트 및 윈도우 툴킷
OpenGL 콘텍스트 작성은 매우 복잡한 프로세스이며 운영체제에 따라 다르기 때문에 자동 OpenGL 콘텍스트 작성은 SDL, Allegro, SFML, FLTK 및 QT를 포함한 여러 게임 개발 및 사용자 인터페이스 라이브러리의 일반적인 기능이 되었습니다.일부 라이브러리는 OpenGL 지원 창을 생성하도록 설계되어 있습니다.최초의 라이브러리는 OpenGL Utility Toolkit(GLUT)로, 나중에 freeglut으로 대체되었습니다.GLFW는 새로운 [12]대체 수단입니다.
- 이러한 툴킷은 OpenGL 창을 작성 및 관리하고 입력을 관리하도록 설계되어 있지만 [13]그 이상은 아닙니다.
- GLFW – 크로스 플랫폼 윈도우 및 키보드 마우스 조이스틱 핸들러로 게임 지향적
- freeglut – 크로스 플랫폼 윈도 및 키보드 마우스 핸들러. API는 GLUT API의 슈퍼셋으로 GLUT보다 안정적이고 최신입니다.
- OpenGL Utility Toolkit (GLUT)– 오래된 윈도 설정 핸들러로 유지보수가 필요 없습니다.
- 여러 "멀티미디어 라이브러리"에서 OpenGL 창을 만들 수 있으며 게임과 같은 응용 프로그램에 유용한 입력, 사운드 및 기타 작업도 가능합니다.
- 위젯 툴킷
확장 로드 라이브러리
OpenGL 확장 기능 식별 및 로드에 관련된 높은 작업 부하를 고려하여 사용 가능한 모든 확장 기능 및 기능을 자동으로 로드하는 라이브러리가 몇 개 설계되어 있습니다.예를 들어 OpenGL Easy Extension Library(GLEE), OpenGL Extension Wrangler Library(GLEW), glbinding 등이 있습니다.또한 확장자는 JOGL 및 PyOpenGL과 같은 대부분의 언어 바인딩에 의해 자동으로 로드됩니다.
실장
Mesa 3D는 OpenGL의 오픈 소스 구현입니다.순수 소프트웨어 렌더링을 수행할 수 있으며 직접 렌더링 인프라를 활용하여 BSD, 리눅스 및 기타 플랫폼에서 하드웨어 가속을 사용할 수도 있습니다.버전 20.0에서는 OpenGL 표준 버전 4.6을 구현하고 있습니다.
역사
1980년대에는 다양한 그래픽 하드웨어로 동작할 수 있는 소프트웨어를 개발하는 것이 정말 어려운 일이었습니다.소프트웨어 개발자는 각 하드웨어의 커스텀 인터페이스와 드라이버를 작성했습니다.이것은 비용이 많이 들고 노력이 배가 되었다.
1990년대 초까지 SGI(Silicon Graphics)는 워크스테이션용 3D 그래픽스의 선두주자였다.IRIS GL[14][15] API는 오픈 스탠다드 기반의 [citation needed]PHIGS보다 널리 사용되는 업계 표준이 되었습니다.이는 IRIS GL이 사용하기 [by whom?]쉽다고 여겨졌고 즉시 모드 렌더링을 지원했기 때문입니다.반면, PHIGS는 사용이 어렵고 기능이 오래된 것으로 간주되었다.
SGI의 경쟁사들(Sun Microsystems, Hewlett-Packard 및 IBM 포함)은 또한 PHIGS 표준에 따라 만들어진 확장에 의해 지원되는 3D 하드웨어를 시장에 내놓을 수 있었습니다. 이는 SGI가 OpenGL이라고 불리는 공개 표준으로 IRIS GL 버전을 오픈 소스하도록 압박했습니다.
그러나 SGI는 IRIS GL에서 OpenGL로 변경함에 따라 상당한 투자가 필요한 고객이 많았다.IRIS GL은 3D 그래픽과 무관한 API 기능도 갖췄다.예를 들어, X Window System과 Sun의 NeWS 이전에 개발되었기 때문에 윈도우 설정, 키보드 및 마우스 API가 포함되었습니다.그리고 IRIS GL 라이브러리는 라이선스 및 특허[further explanation needed] 문제로 인해 오픈에 적합하지 않았습니다.이러한 요소들로 인해 SGI는 OpenGL에 대한 시장 지지가 성숙되는 동안 고급 독점 Iris Inventor 및 Iris Performer 프로그래밍 API를 계속 지원해야 했습니다.
IRIS GL의 제약사항 중 하나는 기본 하드웨어가 지원하는 기능에만 접근할 수 있다는 것이었다.그래픽스 하드웨어가 네이티브로 기능을 지원하지 않는 경우 응용 프로그램은 기능을 사용할 수 없습니다.OpenGL은 하드웨어에서 지원되지 않는 기능의 소프트웨어 구현을 제공함으로써 이 문제를 해결했습니다.이를 통해 비교적 저전력 시스템에서 응용 프로그램을 고도의 그래픽스를 사용할 수 있게 되었습니다.OpenGL은 하드웨어에 대한 접근을 표준화하여 하드웨어 인터페이스 프로그램(디바이스 드라이버)의 개발 책임을 하드웨어 제조업체에 위임하고 윈도우 기능을 기본 운영 체제에 위임했습니다.매우 다양한 종류의 그래픽 하드웨어를 사용하여 소프트웨어 개발자들에게 3D 소프트웨어 개발을 위한 더 높은 수준의 플랫폼을 제공함으로써 이러한 방식으로 모든 그래픽 하드웨어가 동일한 언어를 사용하도록 하는 것은 놀라운 영향을 미쳤습니다.
1992년 [16]SGI는 OpenGL 규격을 향후 유지 및 확장할 회사 그룹인 OpenGL Architecture Review Board(OpenGL ARB)의 설립을 주도했습니다.
1994년에 SGI는 씬그래프 API 등의 요소를 포함한 "OpenGL++"라고 불리는 것을 출시하는 것을 구상했다(아마도 그들의 Performer 기술을 기반으로 한다).이 사양은 소수의 관계자들 사이에서 회람되었지만,[17] 결코 제품이 되지 않았습니다.
1996년 마이크로소프트는 Direct3D를 출시하여 OpenGL의 주요 경쟁자가 되었습니다.50명이 넘는 게임 개발자들이 1997년 6월 12일에 마이크로소프트에 OpenGL을 [18]적극적으로 지원할 것을 요청하는 공개 서한에 서명했다.1997년 [19]12월 17일 마이크로소프트와 SGI는 OpenGL과 Direct3D 인터페이스를 통합하는 것을 목표로 한 공동 작업인 화씨 프로젝트를 시작했습니다(그리고 장면 그래프 API도 추가).1998년 휴렛패커드는 이 프로젝트에 [20]참여했다.처음에는 인터랙티브한 3D 컴퓨터 그래픽스 API의 세계에 질서를 가져올 것이라는 전망이 있었지만, SGI의 재정적인 제약, 마이크로소프트의 전략적 이유, 그리고 업계의 일반적인 지원 부족으로 인해 1999년에 [21]중단되었습니다.
2006년 7월 OpenGL 아키텍처 리뷰 위원회는 OpenGL API 표준에 대한 관리 권한을 Khronos Group에 [22][23]이양하기로 의결했습니다.
버전 이력
OpenGL의 첫 번째 버전인 1.0은 1992년 6월 30일 Mark Segal과 Kurt Akely에 의해 출시되었습니다.그 이후 OpenGL은 새로운 버전의 사양을 출시함으로써 때때로 확장되었습니다.이러한 릴리스에서는, 모든 준거 그래픽 카드가 서포트할 필요가 있는 베이스라인 기능의 세트가 정의되어 새로운 확장자를 간단하게 쓸 수 있습니다.각각의 새로운 버전의 OpenGL은 그래픽 카드 벤더 간에 광범위하게 지원되는 몇 가지 확장 기능을 포함하는 경향이 있습니다.단, 이러한 확장 기능의 세부 사항은 변경될 수 있습니다.
버전 | 발매일 | 특징들 |
---|---|---|
1.1 | 1995년[citation needed] | 텍스처 객체, 정점 배열 |
1.2 | 1998년 3월 16일 | 3D 텍스처, BGRA 및 패킹된 픽셀 형식,[24] 이미지 처리 애플리케이션에 유용한 이미지 서브셋 도입 |
1.2.1 | 1998년 10월 14일 | ARB 확장 개념 |
1.3 | 2001년 8월 14일 | 멀티텍스트화, 멀티샘플링, 텍스처 압축 |
1.4 | 2002년 7월 24일 | 깊이 텍스처, GLSlang[25] |
1.5 | 2003년 7월 29일 | 정점 버퍼 객체(VBO), 폐색[26] 쿼리 |
2.0 | 2004년 9월 7일 | GLSL 1.1, MRT, 두 질감의 검정력 없음, 포인트 스프라이트,[27] 양면 스텐실[26] |
2.1 | 2006년 7월 2일 | GLSL 1.2, 픽셀 버퍼 객체(PBO), sRGB[26] 텍스처 |
3.0 | 2008년 8월 11일 | GLSL 1.3, 텍스처 어레이, 조건부 렌더링, Frame Buffer Object([28]Frame Buffer Object) |
3.1 | 2009년 3월 24일 | GLSL 1.4, 인스턴스화, 텍스처 버퍼 객체, 균일한 버퍼 객체, 프리미티브 재시작[29] |
3.2 | 2009년 8월 3일 | GLSL 1.5, 지오메트리 셰이더, 멀티샘플링[30] 텍스처 |
3.3 | 2010년 3월 11일 | GLSL 3.30, OpenGL 4.0 사양에서 최대한 많은 기능을 제공합니다. |
4.0 | 2010년 3월 11일 | GLSL 4.00, GPU에서의 테셀레이션, 64비트[31] 정밀도의 셰이더 |
4.1 | 2010년 7월 26일 | GLSL 4.10, 개발자 친화적인 디버깅 출력, OpenGL ES 2.0과의[32] 호환성 |
4.2 | 2011년[33] 8월 8일 | GLSL 4.20, Atomic 카운터가 있는 셰이더, 변환 피드백 인스턴스 작성, 셰이더 패킹, 퍼포먼스 향상 |
4.3 | 2012년[34] 8월 6일 | GLSL 4.30, GPU 병렬 처리를 이용한 컴퓨팅 셰이더, 셰이더 스토리지 버퍼 객체, 고품질 ETC2/EAC 텍스처 압축, 메모리 보안 강화, 멀티 애플리케이션 견고성 확장, OpenGL ES 3.0과의[35] 호환성 |
4.4 | 2013년[36] 7월 22일 | GLSL 4.40, 버퍼 배치 제어, 효율적인 비동기 쿼리, 셰이더 변수 레이아웃, 효율적인 다중 객체 바인딩, Direct3D 응용 프로그램의 간소화된 포팅, 바인딩 없는 텍스처 확장, 스파스 텍스처[36] 확장 |
4.5 | 2014년[8][37] 8월 11일 | GLSL 4.50, 다이렉트 스테이트 액세스(DSA), 플래시 제어, 견고성, OpenGL ES 3.1 API 및 셰이더 호환성, DX11 에뮬레이션 기능 |
4.6 | 2017년[38][39] 7월 31일 | GLSL 4.60, 지오메트리 처리 및 셰이더 실행 효율 향상, 상세 정보, 오류 컨텍스트 없음, 폴리곤 오프셋 클램프, SPER-V, 이방성 필터링 |
OpenGL 2.0
발매일:2004년 9월 7일
OpenGL 2.0은 원래 OpenGL이 정체되어 있고 강력한 [40]방향성이 결여되어 있다는 우려에 대처하기 위해 3DLabs에 의해 고안되었습니다.3DLabs는 표준에 대한 많은 주요 추가 사항을 제안했습니다.이 중 대부분은 당시 ARB에 의해 거부되거나 3DLabs가 제안한 형태로 실현되지 않았습니다.그러나, C-스타일 쉐이딩 언어에 대한 그들의 제안은 결국 완성되었고, 그 결과 현재 OpenGL 쉐이딩 언어(GLSL 또는 GLSlang)가 공식화되었습니다.대체하고 있던 어셈블리와 같은 쉐이딩 언어와 마찬가지로 고정 기능의 정점과 fragment 파이프를 셰이더로 대체할 수 있었습니다.단, 이번에는 C와 같은 고급 언어로 작성되었습니다.
GLSL의 설계는 당시 사용 가능했던 하드웨어의 한계에 대해 상대적으로 거의 양보하지 않은 것으로 두드러졌습니다.이는 OpenGL이 단순히 현재 사용 가능한 하드웨어의 상태를 추적하는 것이 아니라 3D 가속기에 대해 야심차고 미래 지향적인 목표를 설정했던 이전의 전통으로 거슬러 올라갑니다.최종 OpenGL 2.0 사양에는[41] GLSL 지원이 포함되어 있습니다.
Longs Peak 및 OpenGL 3.0
OpenGL 3.0이 출시되기 전에 새로운 리비전의 코드명은 Longs Peak이었습니다.최초 발표 당시 Longs Peak은 OpenGL 생애 최초의 주요 API 리비전으로 제시되었습니다.이는 OpenGL의 작동 방식에 대한 전면적인 재검토로 이루어졌으며 API의 근본적인 변화를 요구했습니다.
초안에서는 객체 관리의 변경을 도입했습니다.GL 2.1 객체 모델은 OpenGL의 상태 기반 설계를 기반으로 구축되었습니다.즉, 개체를 변경하거나 사용하려면 개체를 상태 시스템에 바인딩한 다음 상태를 변경하거나 바인딩된 개체를 사용하는 함수 호출을 수행해야 합니다.
OpenGL은 상태 시스템을 사용하기 때문에 객체는 가변 가능해야 합니다.즉, 렌더링 파이프라인이 해당 개체를 비동기적으로 사용하고 있더라도 개체의 기본 구조는 언제든지 변경될 수 있습니다.텍스처 오브젝트는 2D에서 3D로 재정의할 수 있습니다.이를 위해서는 OpenGL을 구현하여 내부 객체 관리를 더욱 복잡하게 해야 합니다.
Longs Peak API에서는 오브젝트 작성은 atomic이 되어 템플릿을 사용하여1개의 함수 호출로 작성되는 오브젝트의 속성을 정의합니다.이 오브젝트는 여러 스레드에서 즉시 사용할 수 있습니다.오브젝트도 불변하지만 콘텐츠 변경 및 갱신을 할 수 있습니다.예를 들어 텍스처는 이미지를 변경할 수 있지만 크기와 형식은 변경할 수 없습니다.
하위 호환성을 지원하기 위해 이전 상태 기반 API를 사용할 수 있지만 이후 버전의 OpenGL에서는 이전 API를 통해 새로운 기능이 노출되지 않습니다.이를 통해 대부분의 CAD 제품과 같은 레거시 코드 베이스를 계속 실행할 수 있었고 다른 소프트웨어는 새로운 API에 대해 작성하거나 새로운 API에 이식할 수 있었습니다.
Longs Peak은 원래 OpenGL 3.0이라는 이름으로 2007년 9월에 완성될 예정이었지만,[42] 10월 30일 Kronos Group은 사양을 발표하기 전에 몇 가지 문제에 부딪혔다고 발표했습니다.그 결과 사양은 지연되었고 Khronos 그룹은 최종 OpenGL 3.0 사양이 출시될 때까지 미디어 블랙아웃에 들어갔습니다.
최종 사양은 롱스 피크 제안보다 훨씬 덜 혁명적인 것으로 판명되었습니다.사양에서는 즉시 모드와 고정 기능(비섀도 모드)을 모두 삭제하는 대신 사용되지 않는 기능으로 포함시켰습니다.제안된 객체 모델은 포함되지 않았으며 향후 개정판에 포함시킬 계획은 발표되지 않았습니다.그 결과 API는 거의 그대로 유지되었으며 일부 기존 확장이 핵심 기능으로 승격되었습니다.
일부 개발자 그룹들 사이에서는 이 결정이 큰 [43]소동을 일으켰고, 많은 개발자들은 이에 항의하여 DirectX로 바꾸겠다고 공언했다.대부분의 불만은 크로노스가 개발 커뮤니티에 대한 의사소통의 부족과 많은 사람들이 호의적으로 보였던 여러 특징들이 폐기된 것을 중심으로 이루어졌다.OpenGL 3.0을 사용하기 위한 DirectX 10 레벨 하드웨어의 요건, 지오메트리 셰이더 및 인스턴스 렌더링이 핵심 기능으로 제공되지 않는 등의 문제가 있었습니다.
다른 소식통들은 커뮤니티의 반응이 당초 [44]제시된 것만큼 심각하지 않다고 보고했으며,[45][46] 많은 벤더가 업데이트에 대한 지원을 나타내고 있다.
OpenGL 3.0
발매일:2008년 8월 11일
OpenGL 3.0은 API의 향후 리비전을 단순화하기 위해 폐지 메커니즘을 도입했습니다.권장되지 않는 것으로 마크된 특정 기능은 윈도우 시스템에서 전방 호환 컨텍스트를 요구함으로써 완전히 비활성화될 수 있습니다.그러나 OpenGL 3.0 기능은 전체 컨텍스트를 요청하여 권장되지 않는 기능과 함께 액세스할 수 있습니다.
권장되지 않는 기능은 다음과 같습니다.
- 모든 고정 함수 정점 및 프래그먼트 처리
- glBegin 및 glEnd를 사용한 직접 모드 렌더링
- 목록 표시
- 색인이 있는 렌더링 대상
- OpenGL 셰이딩 언어 버전 1.10 및 1.20
OpenGL 3.1
발매일:2009년 3월 24일
OpenGL 3.1은 넓은 선을 제외하고 버전 3.0에서 권장되지 않았던 모든 기능을 완전히 제거했습니다.이 버전 이후에는 전체 컨텍스트를 사용하여 새 기능에 액세스하거나 정방향 호환 컨텍스트를 사용하여 사용되지 않는 기능에 액세스할 수 없습니다.구현에서 ARB_호환성 확장이 지원되는 경우 이전 규칙에 대한 예외가 발생하지만 이는 보장되지 않습니다.
하드웨어:Mesa는 버전 21.0에서 ARM Panfrost를 지원합니다.
OpenGL 3.2
발매일:2009년 8월 3일
OpenGL 3.2는 OpenGL 3.0에 의해 도입된 권장 해제 메커니즘을 기반으로 설계되었으며, 사양을 핵심 프로파일과 호환성 프로파일로 나눕니다.호환성 콘텍스트에는 OpenGL 3.1과 함께 출시된ARB_호환성 확장과 동등한 이전에 삭제된 고정 기능 API가 포함되어 있지만 코어 콘텍스트에는 포함되어 있지 않습니다.OpenGL 3.2에는 GLSL 버전 1.50으로의 업그레이드도 포함되어 있습니다.
OpenGL 3.3
발매일:2010년 3월 11일
Mesa는 소프트웨어 드라이버 SWR, 소프트파이프 및 NV50을 탑재한 오래된 NVIDIA 카드를 지원합니다.
OpenGL 4.0
발매일:2010년 3월 11일
OpenGL 4.0은 버전 3.3과 함께 출시되었습니다.Direct3D 11을 지원할 수 있는 하드웨어용으로 설계되었습니다.
OpenGL 3.0과 마찬가지로 이 OpenGL 버전에는 Direct3D 11 클래스 하드웨어의 기능을 완전히 노출하도록 설계된 매우 중요한 확장 기능이 다수 포함되어 있습니다.가장 영향력 있는 확장자만 아래에 나열되어 있습니다.
하드웨어 지원: Nvidia GeForce 400 시리즈 이후, AMD Radeon HD 5000 시리즈 이후([47]일부 TeraScale GPU에 에뮬레이션으로 구현된FP64 셰이더), 인텔 Ivy Bridge 프로세서의 인텔 HD 그래픽스.
OpenGL 4.1
발매일:2010년 7월 26일
하드웨어 지원: Nvidia GeForce 400 시리즈 이후, AMD Radeon HD 5000 시리즈 이후([47]일부 TeraScale GPU에 에뮬레이션으로 구현된FP64 셰이더), 인텔 Ivy Bridge 프로세서의 인텔 HD 그래픽스.
- 이 [48]사양을 구현하는 GPU의 최소 "최대 텍스처 크기"는 16,384 × 16,384입니다.
OpenGL 4.2
발매일:2011년[33] 8월 8일
- 아토믹 카운터를 사용한 셰이더 및 텍스처의 1레벨에 대한 로드스토어 아토믹 읽기-수정-쓰기 조작 지원
- GPU 정점 처리(테셀레이션 포함)에서 캡처한 데이터의 여러 인스턴스를 그려 복잡한 오브젝트의 위치를 효율적으로 조정하고 복제할 수 있도록 한다.
- 압축된 텍스처의 임의의 서브셋을 변경할 수 있습니다.전체 텍스처를 GPU에 재다운로드하지 않아도 퍼포먼스가 대폭 향상됩니다.
하드웨어 지원: Nvidia GeForce 400 시리즈 이후, AMD Radeon HD 5000 시리즈 이후([47]일부 TeraScale GPU에 에뮬레이션으로 구현된 FP64 셰이더), 인텔 Haswell 프로세서 이후 인텔 HD 그래픽스 (Linux Mesa:Ivy Bridge 이후)
OpenGL 4.3
발매일:2012년[34] 8월 6일
- 그래픽스 파이프라인의 컨텍스트 내에서 GPU 병렬 처리를 이용한 컴퓨팅 셰이더
- 셰이더 스토리지 버퍼 객체: 4.2부터 이미지 로드/스토어 등의 버퍼 객체를 읽고 쓸 수 있지만 함수 호출이 아닌 언어를 통해 읽을 수 있습니다.
- 이미지 형식 매개 변수 쿼리
- ETC2/EAC 텍스처 압축(표준 기능)
- OpenGL ES 3.0 API와의 완전한 호환성
- 응용 프로그램 개발 중에 디버깅메시지를 수신하는 디버깅 기능
- 데이터 복제 없이 다양한 방식으로 텍스처를 해석하는 텍스처 뷰
- 메모리 보안 및 멀티 애플리케이션 안정성 향상
하드웨어 지원: AMD Radeon HD 5000 시리즈 이후 (일부 TeraScale GPU 에뮬레이션으로 구현된FP64 셰이더),[47] 인텔 Haswell 프로세서 이후 인텔 HD 그래픽스 (Linux Mesa:스텐실 텍스처링이 없는 Ivy Bridge, Haswell 이상), Nvidia GeForce 400 시리즈 이후.가상 시스템의 VIRGL 에뮬레이션은 Mesa 20에서 4.3 이상을 지원합니다.
OpenGL 4.4
발매일:2013년[36] 7월 22일
- 적용된 버퍼 개체 사용률 제어
- 버퍼 개체에 대한 비동기 쿼리
- 셰이더에서 인터페이스 변수의 레이아웃 제어 추가 표현
- 여러 개체를 동시에 효율적으로 바인딩
하드웨어 지원: AMD Radeon HD 5000 시리즈 이후 (일부 TeraScale GPU 에뮬레이션으로 구현된FP64 셰이더), 인텔 Broadwell 프로세서 이후의 인텔 HD 그래픽스 (Linux Mesa: [49]Haswell 이후), Nvidia GeForce 400 시리즈 이후, Tegra K1.[50]
OpenGL 4.5
- Direct State Access(DSA; 다이렉트스테이트 액세스)– 오브젝트액세스를 사용하면 오브젝트를 컨텍스트에 바인드하지 않고 상태를 조회 및 변경할 수 있으므로 애플리케이션 및 미들웨어의 효율성과 [51]유연성이 향상됩니다.
- 플래시 제어 – 컨텍스트 전환 전 보류 중인 명령어 플러시를 응용 프로그램이 제어할 수 있으므로 고성능 멀티스레드 응용 프로그램을 사용할 수 있습니다.
- 견고성 – WebGL 브라우저 등의 애플리케이션에 안전한 플랫폼을 제공합니다.또, 실행중의 다른 애플리케이션에 영향을 주는 GPU 리셋을 방지합니다.
- OpenGL ES 3.1 API 및 셰이더 호환성– 데스크톱 시스템에서 최신 OpenGL ES 애플리케이션을 쉽게 개발하고 실행할 수 있습니다.
하드웨어 지원: AMD Radeon HD 5000 시리즈 이후 (일부 TeraScale GPU 에뮬레이션으로 구현된FP64 셰이더), 인텔 Broadwell 프로세서 이후의 인텔 HD 그래픽스 (Linux Mesa: Haswell 이후), Nvidia GeForce 400 시리즈 및 Tegra K1 이후.[50][52][53]
OpenGL 4.6
- GPU측 지오메트리 처리 효율 향상
- 보다 효율적인 셰이더 실행()AZDO
- 통계, 오버플로 쿼리 및 카운터를 통한 상세 정보
- 에러 처리 콘텍스트를 사용하지 않고 퍼포먼스를 향상
- 폴리곤 오프셋 기능의 클램핑, 그림자 렌더링 문제 해결
- SPER-V 셰이더
- 이방성 필터링 향상
하드웨어 지원: AMD Radeon HD 7000 시리즈 이후 (일부 TeraScale GPU 에뮬레이션으로 구현된FP64 셰이더), Intel Haswell 이후, Nvidia GeForce 400 시리즈 이후.[50]
드라이버 지원:
- Linux의 Mesa 19.2는 인텔 Broadwell 이후의 [54]OpenGL 4.6을 지원합니다.Mesa 20.0은 AMD Radeon GPU를 [55]지원하며 Nvidia Kepler+ 지원은 진행 중입니다.에뮬레이션 드라이버로서의 Zink와 소프트웨어 드라이버 LLVMpipe도 Mesa 21.0을 지원합니다.
- AMD Radeon™ HD 7700+, HD 8500+ 이후 지원 Windows 7 SP1, 10 버전 1803 (2018년 4월 업데이트)의 AMD Adrenalin 18.4.1 그래픽 드라이버.2018년 [56][57]4월 발매.
- Windows 10 용 인텔 26.20.100.6861 그래픽스 드라이버.2019년 [58][59]5월 발매.
- NVIDIA GeForce 397.31 그래픽스 드라이버(Windows 7, 8, 10 x86-64 비트만 지원), 32비트 지원 없음2018년 4월[60] 발매
대체 구현
애플은 iOS 12 및 macOS 10.14 모하비에서 OpenGL을 메탈보다 더 선호하지만, macOS 13 Ventura(애플 [61]실리콘 장치 포함)에서도 여전히 사용할 수 있습니다.OpenGL에서 지원되는 최신 버전은 [62][63]2011년부터 4.1입니다.Monten VK의 저자인 MontenGL의 독자 라이브러리에서는 OpenGL 콜을 [64]Metal로 변환할 수 있습니다.
Vulkan 위에 OpenGL을 구현하려는 여러 프로젝트가 있습니다.구글의 앵글용 벌칸 백엔드는 2020년 [65]7월에 OpenGL ES 3.1 준거를 달성했습니다.Mesa3D 프로젝트에는 [66]징크라고 불리는 드라이버도 포함되어 있습니다.
OpenGL의 미래
![]() |
2018년 6월, Apple은 모든 플랫폼(iOS, macOS 및 tvOS)에서 OpenGL API를 폐지하고 개발자들에게 2014년에 [67]도입된 자체 Metal API를 사용하도록 강력히 권장했습니다.
Stadia와 Google 운영체제 Fuchsia는 Vulkan만 지원합니다.
2016년 id Software는 id Tech 6 게임 엔진에 대한 업데이트를 출시하여 Vulkan에 대한 지원을 추가하였고 OpenGL에 대한 지원은 유지하였습니다.ID Tech 7은 OpenGL을 [68]지원하지 않게 되었습니다.
2021년 9월 17일 밸브는 향후 [69]업데이트에서 Dota 2에서 OpenGL을 제거할 것이라고 발표했습니다.[70]
비정형게임즈는 삼성의 지원을 받아 애플 이외의 모든 플랫폼에서 OpenGL이 아닌 벌칸을 사용하도록 게임 엔진을 업데이트했다.[71]
OpenGL은 Vulkan과 비교하여 GPU에서의 비디오 디코딩을 위한 API인 Ray Tracing을 지원하지 않습니다.
OpenGL은 딥 러닝을 통한 안티에이리어싱 알고리즘을 지원하지 않습니다.AMD FinelityFX Super Resolution (FSR)[73] 및 Nvidia DLSS[75]
불칸
이전에 "차세대 OpenGL 이니셔티브"(glNext)라고 [77][78]불렸던 Vulkan은 OpenGL과 OpenGL [79][80][81]ES를 기존 OpenGL 버전과 역호환되지 않는 하나의 공통 API로 통합하기 위한 기초적인 재설계 작업입니다.
Vulkan API의 초기 버전은 2016년 2월 16일에 공개되었습니다.
「 」를 참조해 주세요.
- ARB 어셈블리 언어 – OpenGL의 레거시 로우 레벨 쉐이딩 언어
- OpenGL과 Direct3의 비교d
- Direct3D – OpenGL의 주요 경쟁사
- Glide API – 한때 3dfx Voodoo 카드에 사용되었던 그래픽 API
- OpenGL 어플리케이션 목록
- Metal (API)– iOS, macOS, tvOS, watch용 그래픽스 APIOS
- OpenAL – Open과 유사한 크로스 플랫폼 오디오 라이브러리GL
- OpenGL ES – 임베디드 시스템용 OpenGL
- OpenSL ES – Khronos Group이 개발한 임베디드 시스템의 오디오용 API
- OpenVG – Khronos Group이 개발한 고속 2D 그래픽스용 API
- RenderMan Interface Specification (RISpec)– 사실적인 오프라인 렌더링을 위한 픽사의 오픈 API
- VOGL – OpenGL용 디버거
- Vulkan – 오버헤드가 낮은 크로스 플랫폼 2D 및 3D 그래픽스 API, "차세대 OpenGL 이니셔티브"
- 그래픽스 파이프라인
- 웹 GPU
레퍼런스
- ^ Lextrait, Vincent (January 2010). "The Programming Languages Beacon, v10.0". Archived from the original on May 30, 2012. Retrieved March 14, 2010.
- ^ "Products: Software: OpenGL: Licensing and Logos". SGI. Archived from the original on November 1, 2012. Retrieved November 7, 2012.
- ^ "The OpenGL Graphics System: A Specification" (PDF). 4.0 (Core Profile). March 11, 2010.
- ^ "SGI – OpenGL Overview". Archived from the original on October 31, 2004. Retrieved February 16, 2007.
- ^ Peddie, Jon (July 2012). "Who's the Fairest of Them All?". Computer Graphics World. Retrieved May 30, 2018.
- ^ "OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group". The Khronos Group. July 31, 2006. Retrieved March 18, 2021.
- ^ "Khronos Membership Overview and FAQ". Khronos.org. Retrieved November 7, 2012.
- ^ a b c d "Khronos OpenGL Registry". Khronos Group. Retrieved July 31, 2017.
- ^ "NV_half_float". OpenGL Registry. Khronos Group.
- ^ "How to Create Khronos API Extensions". Khronos Group. Retrieved July 31, 2017.
- ^ "OpenGL - The Industry's Foundation for High Performance Graphics". The Khronos Group. July 19, 2011. Retrieved March 18, 2021.
- ^ "A list of GLUT alternatives, maintained by". Khronos Group. Retrieved May 2, 2013.
- ^ "Related toolkits and APIs". www.opengl.org. OpenGL. Retrieved October 8, 2014.
- ^ "IRIS GL, SGI's property".
- ^ Kilgard, Mark (2008). "OpenGL Prehistory: IRIS GL (slide)". www.slideshare.net.
- ^ "Creation of the OpenGL ARB". Archived from the original on February 22, 2007. Retrieved February 16, 2007.
- ^ "End of OpenGL++". Khronos Group.
- ^ "Top Game Developers Call on Microsoft to Actively Support OpenGL". Next Generation. No. 32. Imagine Media. August 1997. p. 17.
- ^ "Announcement of Fahrenheit". Archived from the original on September 27, 2007.
- ^ "Members of Fahrenheit. 1998". Computergram International. 1998. Archived from the original on October 5, 2007.
- ^ "End of Fahrenheit". The Register.
- ^ "OpenGL ARB to pass control of OpenGL specification to Khronos Group". Khronos press release. July 31, 2006.
- ^ "OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group". AccessMyLibrary Archive.
- ^ Astle, Dave (April 1, 2003). "Moving Beyond OpenGL 1.1 for Windows". gamedev.net. Retrieved November 15, 2007.
- ^ Isorna, J.M. (2015). Simulación visual de materiales : teoría, técnicas, análisis de casos. UPC Grau. Arquitectura, urbanisme i edificació (in Spanish). Universitat Politècnica de Catalunya. p. 191. ISBN 978-84-9880-564-2. Retrieved August 21, 2019.
- ^ a b c "The OpenGL Graphics System: A Specification" (PDF). 2.1. December 1, 2006.
- ^ "Point Primitive".
- ^ "The OpenGL Graphics System: A Specification" (PDF). 3.0. September 23, 2008.
- ^ "The OpenGL Graphics System: A Specification" (PDF). 3.1. May 28, 2009.
- ^ "The OpenGL Graphics System: A Specification" (PDF). 3.2 (Core Profile). December 7, 2009.
- ^ "Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0". March 11, 2010.
- ^ "Khronos Drives Evolution of Cross-Platform 3D Graphics with Release of OpenGL 4.1 Specification". July 26, 2010.
- ^ a b "Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification". August 8, 2011.
- ^ a b "Khronos Releases OpenGL 4.3 Specification with Major Enhancements". August 6, 2012.
- ^ "Khronos Releases OpenGL 4.3 Specification with Major Enhancements". August 6, 2012.
- ^ a b c "Khronos Releases OpenGL 4.4 Specification". July 22, 2013.
- ^ a b "Khronos Group Announces Key Advances in OpenGL Ecosystem – Khronos Group Press Release". The Khronos Group Inc. August 10, 2014. Retrieved April 17, 2015.
- ^ a b "Khronos Releases OpenGL 4.6 with SPIR-V Support". The Khronos Group Inc. July 31, 2017. Retrieved July 31, 2017.
- ^ a b Kessenich, John; Baldwin, Dave. "The OpenGL® Shading Language, Version 4.60.7". The Khronos Group Inc. Retrieved August 21, 2019.
- ^ Abi-Chahla, Fedy (September 16, 2008). "OpenGL 3 (3DLabs And The Evolution Of OpenGL)". Tom's Hardware. Retrieved October 24, 2010.
- ^ "The OpenGL Graphics System: A Specification" (PDF). 2.0. October 22, 2004.
- ^ "OpenGL ARB announces an update on OpenGL 3.0". October 30, 2007. Retrieved October 31, 2007.
- ^ "OpenGL 3.0 Released, Developers Furious – Slashdot". Tech.slashdot.org. Retrieved November 7, 2012.
- ^ "OpenGL BOF went over well, no pitch forks seen".
- ^ "The Industry Standard for High Performance Graphics". OpenGL. August 18, 2008. Retrieved July 31, 2017.
- ^ "NVIDIA provides early OpenGL 3.0 driver now".
- ^ a b c d "Intel Iris and HD Graphics Driver for Windows 7/8/8.1 64bit". Intel Download Center. Archived from the original on April 2, 2015.
- ^ "Expected maximum texture size - Graphics and GPU Programming". GameDev.net.
- ^ "Intel Skylake-S CPUs and 100-series Chipsets Detailed in Apparent Leak". NDTV Gadgets. April 17, 2015.
- ^ a b c Larabel, Michael (July 31, 2017). "NVIDIA Releases 381.26.11 Linux Driver With OpenGL 4.6 Support". Phoronix.
- ^ "OpenGL 4.5 released—with one of Direct3D's best features". Ars Technica. August 11, 2014. Retrieved April 17, 2015.
- ^ "SG4121: OpenGL Update for NVIDIA GPUs". Ustream. Archived from the original on May 17, 2015. Retrieved April 17, 2015.
- ^ Kilgard, Mark (August 12, 2014). "OpenGL 4.5 Update for NVIDIA GPUs". Retrieved April 17, 2015.
- ^ Larabel, Michael (August 21, 2019). "Intel's OpenGL Linux Driver Now Has OpenGL 4.6 Support For Mesa 19.2". Phoronix.
- ^ Larabel, Michael (November 27, 2019). "AMD's RadeonSI Driver Finally Enables OpenGL 4.6". Phoronix.
- ^ "AMD Adrenalin 18.4.1 Graphics Driver Released (OpenGL 4.6, Vulkan 1.1.70) – Geeks3D". www.geeks3d.com. Retrieved May 10, 2018.
- ^ "Radeon™ Software Adrenalin Edition 18.4.1 Release Notes". support.amd.com. Retrieved May 10, 2018.
- ^ "Intel Graphics Driver 25.20.100.6861 Released (OpenGL 4.6 + Vulkan 1.1.103) Geeks3D". Retrieved May 16, 2019.
- ^ "Windows® 10 DCH Drivers". Intel DownloadCenter. Retrieved August 21, 2019.
- ^ "NVIDIA GeForce 397.31 Graphics Driver Released (OpenGL 4.6, Vulkan 1.1, RTX, CUDA 9.2) – Geeks3D". www.geeks3d.com. Retrieved May 10, 2018.
- ^ "Apple Developer Documentation". developer.apple.com.
- ^ Cunningham, Andrew (October 7, 2019). "macOS 10.15 Catalina: The Ars Technica review". Ars Technica.
- ^ Axon, Samuel (June 6, 2018). "The end of OpenGL support, plus other updates Apple didn't share at the keynote". Ars Technica. Retrieved October 19, 2020.
- ^ "Vulkan, and faster OpenGL ES, on iOS and macOS". Molten. Retrieved October 19, 2020.
- ^ The ANGLE Project Authors (October 14, 2020). "google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android". GitHub. Retrieved December 17, 2020.
- ^ "Zink". The Mesa 3D Graphics Library latest documentation.
- ^ Smith, Ryan (June 5, 2018). "Apple Deprecates OpenGL Across All OSes; Urges Developers to use Metal". www.anandtech.com. Purch. Retrieved June 5, 2018.
- ^ "Doom Wiki: id Tech 7". Retrieved October 26, 2021.
- ^ "In the coming months, Dota 2 will remove support for 32-bit systems, OpenGL, and DirectX 9".
- ^ "Valve's Dota 2 to drop support for 32-bit systems, DirectX 9, and OpenGL".
- ^ "Jet Set Vulkan : Reflecting on the move to Vulkan".
- ^ "Mesh Shaders".
- ^ "AMD FidelityFX Super Resolution". Retrieved May 17, 2022.
- ^ "AMD FidelityFX™ Super Resolution (FSR)".
- ^ "NVIDIA DLSS".
- ^ "Getting Started with DLSS". June 2021.
- ^ Dingman, Hayden (March 3, 2015). "Meet Vulkan, the powerful, platform-agnostic gaming tech taking aim at DirectX 12". PC World. Retrieved March 3, 2015.
- ^ Bright, Peter (March 3, 2015). "Khronos unveils Vulkan: OpenGL built for modern systems". Ars Technica. Retrieved March 3, 2015.
- ^ "Khronos Announces Next Generation OpenGL Initiative". AnandTech. Retrieved August 20, 2014.
- ^ "OpenGL 4.5 released, next-gen OpenGL unveiled: Cross-platform Mantle killer, DX12 competitor". Retrieved August 20, 2014.
- ^ "Khronos Publishes Its Slides About OpenGL-Next". Phoronix. Retrieved August 22, 2014.
추가 정보
- Shreiner, Dave; Sellers, Graham; et al. (March 30, 2013). OpenGL Programming Guide: The Official Guide to Learning OpenGL. Version 4.3 (8th ed.). Addison-Wesley. ISBN 978-0-321-77303-6.
- Sellers, Graham; Wright, Richard S.; Haemel, Nicholas (July 31, 2013). OpenGL SuperBible: Comprehensive Tutorial and Reference (6th ed.). Addison-Wesley. ISBN 978-0-321-90294-8.
- Rost, Randi J. (July 30, 2009). OpenGL Shading Language (3rd ed.). Addison-Wesley. ISBN 978-0-321-63763-5.
- Lengyel, Eric (2003). The OpenGL Extensions Guide. Charles River Media. ISBN 1-58450-294-0.
- OpenGL Architecture Review Board; Shreiner, Dave (2004). OpenGL Reference Manual: The Official Reference Document to OpenGL. Version 1.4. Addison-Wesley. ISBN 0-321-17383-X.
- OpenGL Architecture Review Board; Shreiner, Dave; et al. (2006). OpenGL Programming Guide: The Official Guide to Learning OpenGL. Version 2 (5th ed.). Addison-Wesley. ISBN 0-321-33573-2.
외부 링크


- 공식 웹사이트
- OpenGL 개요 및 OpenGL 언어 바인딩에 대한 자세한 내용은 OpenGL.org의 Wiki를 참조하십시오.
- SGI의 OpenGL 웹사이트
- Curlie에서의 OpenGL
- 크로노스 그룹