맨위로가기

OpenGL

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

1. 개요

OpenGL은 3차원 그래픽스 렌더링을 위한 API(Application Programming Interface)로, 점, 선, 다각형과 같은 기본 도형을 픽셀 형식으로 변환하여 화면에 표시하는 역할을 한다. 1992년 SGI에 의해 처음 출시되었으며, 이후 OpenGL 아키텍처 검토 위원회(ARB)를 거쳐 2006년부터는 크로노스 그룹에서 관리하고 있다. OpenGL은 다양한 버전으로 발전해 왔으며, 각 버전마다 새로운 기능과 확장이 추가되었다. OpenGL은 3D 그래픽스 API인 DirectX와 경쟁하며, 2017년 OpenGL 4.6 버전을 마지막으로 더 이상 버전 업데이트는 이루어지지 않고 사양서 유지보수만 진행되고 있다. 또한 Vulkan(벌칸)이라는 차세대 API가 OpenGL의 뒤를 잇고 있다.

더 읽어볼만한 페이지

  • OpenGL - WebGL
    WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다.
  • OpenGL - OpenGL ES
    OpenGL ES는 임베디드 시스템 및 모바일 장치를 위한 3D 그래픽 API로, OpenGL의 부분 집합이며, 다양한 버전으로 발전해 왔고, 안드로이드, iOS 등 여러 플랫폼에서 3D 그래픽 구현에 사용되며 WebGL의 기반이 되기도 한다.
  • 3차원 그래픽스 API - WebGL
    WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다.
  • 3차원 그래픽스 API - Direct3D
    Direct3D는 마이크로소프트가 개발한 3차원 그래픽스 API로, 그래픽 하드웨어 가속을 지원하며 렌더링 파이프라인을 통해 데이터를 화면의 이미지로 변환하며, 윈도우 운영체제 및 다른 플랫폼에서도 사용 가능하다.
  • 1992년 소프트웨어 - 윈도우 3.1x
    윈도우 3.1x는 마이크로소프트가 개발한 운영 체제 시리즈로, 윈도우 3.1을 시작으로 다양한 버전이 출시되었으며, 1,000만 개 이상 판매되었고, 간체자 지원, 업무용 버전, 다양한 추가 기능, 인터넷 익스플로러 지원 등의 특징을 가진다.
  • 1992년 소프트웨어 - 마이크로소프트 액세스
    마이크로소프트 액세스는 1992년 출시된 데이터베이스 관리 시스템으로, 테이블, 쿼리, 폼 등을 생성하고 VBA를 통해 솔루션을 개발하며, 윈도우에서 사용 가능하고 다양한 데이터 형식과 통합된다.

2. 역사

1980년대에는 다양한 종류의 그래픽 하드웨어에서 작동하는 소프트웨어를 개발하는 것이 매우 어려웠다. 소프트웨어 개발자들은 각각의 하드웨어에 맞춰 인터페이스와 드라이버를 직접 만들어야 했고, 이는 많은 비용과 노력을 요구했다.[18][19]

1990년대 초, 실리콘 그래픽스(SGI)는 워크스테이션용 3차원 그래픽스 분야의 선두 주자였다. SGI가 개발한 IRIS GL API[18][19]는 사용하기 쉽고 즉시 모드 렌더링을 지원하여 업계의 사실상의 표준으로 자리 잡았다. 이는 개방형 표준이었던 PHIGS보다 더 널리 사용되었는데, PHIGS는 사용하기 어렵고 기능적으로 뒤처진다는 평가를 받았다. 그러나 썬 마이크로시스템즈, 휴렛 패커드, IBM 등 SGI의 경쟁사들이 PHIGS 표준을 확장하여 지원하는 3차원 하드웨어를 시장에 출시하면서 SGI의 시장 점유율은 점차 약화되었다. 시장에서의 영향력을 유지하기 위해 SGI는 IrisGL API를 공개 표준으로 전환하기로 결정했는데, 이것이 바로 OpenGL의 시작이다.

OpenGL의 첫 번째 버전인 1.0은 1992년 6월 30일 마크 시걸(Mark Segal)과 커트 애클리(Kurt Akeley)에 의해 출시되었다.[20] 같은 해, SGI는 OpenGL 사양을 유지하고 발전시킬 기업 컨소시엄인 OpenGL 아키텍처 검토 위원회(OpenGL Architecture Review Board, ARB)의 설립을 주도했다. ARB는 이후 여러 버전의 사양을 발표하며 OpenGL을 꾸준히 확장해 나갔다.

1996년 마이크로소프트(Microsoft)가 Direct3D를 출시하면서 OpenGL의 주요 경쟁자로 부상했다. 1997년에는 마이크로소프트와 SGI가 OpenGL과 Direct3D 인터페이스 통합을 목표로 하는 Fahrenheit 프로젝트를 시작했으나,[23] SGI의 재정적 어려움, 마이크로소프트의 전략적 판단 변화, 업계 지원 부족 등으로 인해 1999년에 중단되었다.[25]

glxinfo의 스크린샷, 시스템에서 OpenGL의 Mesa 구현에 대한 정보 표시


2006년 7월, OpenGL ARB는 OpenGL API 표준의 제어권을 크로노스 그룹(Khronos Group)에 이전하기로 투표했다.[26][27] 크로노스 그룹 관리 하에서 OpenGL은 4.6 버전(2017년 출시)까지 발전했지만, 2016년 후속 API인 Vulkan이 발표된 이후 OpenGL의 주요 업데이트는 거의 이루어지지 않고 있다. 레이 트레이싱과 같은 최신 기술은 표준에서 지원되지 않는다.

Vulkan이나 Metal과 같은 새로운 그래픽 API의 등장과 애플(Apple Inc.)[30] 등 일부 주요 기업들의 지원 축소에도 불구하고, OpenGL은 여전히 플랫폼 간 호환성과 ANGLE 같은 호환성 계층 덕분에 널리 사용되고 있다.[28][29] Mesa 3D는 OpenGL의 대표적인 오픈 소스 구현체로, 리눅스 등 여러 플랫폼에서 하드웨어 가속을 지원한다.

2. 1. 초기 역사 (1980년대 ~ 1990년대 초)

1980년대에는 다양한 종류의 그래픽 하드웨어에서 작동하는 소프트웨어를 개발하는 것이 큰 어려움이었다. 소프트웨어 개발자들은 각각의 하드웨어에 맞춰 인터페이스와 드라이버를 직접 만들어야 했고, 이는 많은 비용과 노력을 요구했다.[18][19]

1990년대 초, 실리콘 그래픽스(SGI)는 워크스테이션용 3차원 그래픽스 분야의 선두 주자였다. SGI가 개발한 IRIS GL API[18][19]는 사용하기 쉽고 즉시 모드 렌더링을 지원하여 업계의 사실상 표준으로 자리 잡았다. 이는 개방형 표준이었던 PHIGS보다 더 널리 사용되었는데, PHIGS는 사용하기 어렵고 기능적으로 뒤처진다는 평가를 받았다.

그러나 썬 마이크로시스템즈, 휴렛 패커드, IBM 등 SGI의 경쟁사들이 PHIGS 표준을 확장하여 지원하는 3차원 하드웨어를 시장에 출시하면서 SGI의 시장 점유율은 점차 약화되었다. 시장에서의 영향력을 유지하기 위해 SGI는 IrisGL API를 공개 표준으로 전환하기로 결정했는데, 이것이 바로 OpenGL의 시작이다.

하지만 SGI에게는 IRIS GL 기반 시스템에 상당한 투자를 한 고객들이 많았기 때문에 즉각적인 전환은 어려웠다. 또한 IRIS GL은 3차원 그래픽스와 직접 관련이 없는 기능들도 포함하고 있었다. 예를 들어, X 윈도 시스템이나 썬 마이크로시스템즈의 NeWS보다 먼저 개발되었기 때문에 자체적인 윈도잉, 키보드, 마우스 API를 가지고 있었다. 라이선스 및 특허 문제 역시 IRIS GL을 그대로 공개하기 어렵게 만드는 요인이었다. 이러한 이유로 SGI는 OpenGL에 대한 시장의 지원이 자리를 잡을 때까지 기존의 고급 독점 API인 Open Inventor와 Iris Performer를 계속 지원해야 했다.

IRIS GL의 또 다른 한계는 하드웨어가 기본적으로 지원하는 기능에만 접근할 수 있다는 점이었다. 만약 그래픽 하드웨어가 특정 기능을 지원하지 않으면, 애플리케이션에서 해당 기능을 사용할 수 없었다. OpenGL은 이 문제를 해결하기 위해 하드웨어에서 지원하지 않는 기능이라도 소프트웨어적으로 구현하여 제공했다. 이를 통해 상대적으로 성능이 낮은 시스템에서도 고급 그래픽 기능을 활용할 수 있게 되었다. OpenGL은 하드웨어 접근을 표준화하고, 하드웨어 인터페이스 프로그램(장치 드라이버) 개발의 책임을 하드웨어 제조사에 넘겼으며, 윈도잉 기능은 운영 체제에 맡겼다. 이렇게 다양한 종류의 그래픽 하드웨어가 동일한 언어(API)를 사용하게 되면서, 소프트웨어 개발자들은 3차원 소프트웨어를 더 쉽게 개발할 수 있는 상위 수준의 플랫폼을 갖게 되었다.

1992년[20], SGI는 OpenGL 사양을 유지하고 발전시킬 기업 컨소시엄인 OpenGL 아키텍처 검토 위원회(OpenGL ARB)의 설립을 주도했다. 이 위원회에는 3Dlabs, 애플, AMD(구 ATI), , 에반스 앤드 서더랜드, HP, IBM, 인텔, Matrox, 엔비디아, 실리콘 그래픽스, 썬 마이크로시스템즈(현 오라클) 등이 참여했다.

2. 2. OpenGL 아키텍처 리뷰 위원회 (ARB) 설립과 발전 (1992년 ~ 2006년)

1980년대에는 다양한 그래픽 하드웨어에서 작동하는 소프트웨어를 개발하는 것이 매우 어려웠다. 소프트웨어 개발자는 각 하드웨어에 맞는 사용자 정의 인터페이스와 드라이버를 작성해야 했으며, 이는 많은 비용과 중복된 노력을 발생시켰다.

1990년대 초, 실리콘 그래픽스(SGI)는 워크스테이션용 3D 그래픽 분야를 선도하고 있었다. SGI의 IRIS GL API[18][19]는 사실상의 산업 표준으로 자리 잡았으며, 개방형 표준인 PHIGS보다 널리 사용되었다. 이는 IRIS GL이 사용하기 쉽고 즉시 모드 렌더링을 지원했기 때문으로 평가받았다. 반면 PHIGS는 사용하기 어렵고 기능이 부족하다는 인식이 있었다.

SGI의 경쟁사들(썬 마이크로시스템즈, 휴렛 팩커드, IBM 등)도 PHIGS 표준 확장을 통해 3D 하드웨어를 시장에 출시하기 시작했다. 이러한 경쟁 환경 속에서 SGI는 IRIS GL을 기반으로 한 공개 표준인 '''OpenGL'''을 만들기로 결정했다. 하지만 기존 IRIS GL 고객들의 전환 비용 문제와 IRIS GL 자체의 라이선스 및 특허 문제, 그리고 3D 그래픽과 관련 없는 윈도잉, 키보드, 마우스 API 등의 기능 포함 문제로 인해 SGI는 OpenGL 시장이 성숙할 때까지 자체적인 Iris Inventor 및 Iris Performer API를 계속 지원해야 했다.

IRIS GL의 한계 중 하나는 하드웨어가 지원하는 기능만 사용할 수 있다는 점이었다. OpenGL은 하드웨어가 지원하지 않는 기능을 소프트웨어적으로 구현하여 이 문제를 해결했고, 이를 통해 비교적 낮은 성능의 시스템에서도 고급 그래픽 기능을 사용할 수 있게 되었다. 또한 OpenGL은 하드웨어 접근을 표준화하고, 장치 드라이버 개발 책임을 하드웨어 제조사에 넘겼으며, 윈도잉 기능은 운영 체제에 맡겼다. 이를 통해 다양한 그래픽 하드웨어가 동일한 언어를 사용하게 되어, 3D 소프트웨어 개발자에게 더 높은 수준의 개발 플랫폼을 제공하는 중요한 계기가 되었다.

1992년,[20] SGI는 OpenGL 사양을 유지하고 발전시킬 기업 컨소시엄인 OpenGL 아키텍처 검토 위원회(OpenGL Architecture Review Board, ARB)의 설립을 주도했다. ARB에는 3Dlabs, 애플, AMD(구 ATI), , 에반스 앤드 서더랜드, HP, IBM, 인텔, Matrox, 엔비디아, 실리콘 그래픽스, 썬 마이크로시스템즈(현 오라클) 등 주요 기업들이 참여했다. 2년 후인 1994년경, SGI는 장면 그래프 API 등을 포함하는 "OpenGL++"라는 개념을 제시하고 일부 관계자들과 사양을 공유하기도 했으나, 실제 제품으로 이어지지는 않았다.[21]

OpenGL의 첫 번째 버전인 1.0은 1992년 6월 30일 마크 세갈(Mark Segal)과 커트 애클리(Kurt Akeley)에 의해 출시되었다. 이후 ARB는 새로운 버전의 사양을 발표하며 OpenGL을 꾸준히 확장해 나갔다. 각 버전은 호환 그래픽 카드가 지원해야 하는 기본 기능 집합을 정의하고, 새로운 확장 기능을 쉽게 개발할 수 있는 기반을 제공했다. 새로운 버전은 주로 여러 그래픽 카드 제조사에서 널리 구현된 확장 기능들을 통합하는 방식으로 발전했다.

그래픽 처리 장치(GPU) 제조사들은 코어 API 외에도 ''확장''(extension) 형태로 추가 기능을 제공할 수 있었다. 확장은 새로운 함수나 새로운 상수를 도입할 수 있으며, 기존 OpenGL 함수에 대한 제한을 완화하거나 제거할 수 있다. 공급업체는 다른 공급업체 또는 크로노스 그룹 전체의 지원 없이도 사용자 지정 API를 노출하기 위해 확장을 사용할 수 있으며, 이는 OpenGL의 유연성을 크게 향상시켰다. 모든 확장은 OpenGL 레지스트리에 수집되어 정의된다.[12] 각 확장은 이를 개발한 회사의 이름을 기반으로 하는 짧은 식별자와 연결된다. 예를 들어, 엔비디아(Nvidia)의 식별자는 NV이다.[13] 여러 공급업체가 동일한 API를 사용하여 동일한 기능을 구현하는 데 동의하면, 식별자 EXT를 사용하여 공유 확장이 릴리스될 수 있다. 이러한 경우, 크로노스 그룹의 아키텍처 검토 위원회가 해당 확장에 대한 명시적인 승인을 제공하는 경우도 있으며, 이 경우 식별자 ARB가 사용된다.[14] OpenGL 1.2.1 버전부터 ARB 확장 개념이 공식적으로 도입되었다.

1996년 마이크로소프트(Microsoft)가 Direct3D를 출시하면서 OpenGL의 주요 경쟁자로 부상했다. 이에 50명 이상의 게임 개발자들은 1997년 6월 12일, 마이크로소프트에 OpenGL을 적극적으로 지원할 것을 촉구하는 공개 서한을 발표하기도 했다.[22] 같은 해 12월 17일,[23] 마이크로소프트와 SGI는 OpenGL과 Direct3D 인터페이스를 통합하고 장면 그래프 API를 추가하는 것을 목표로 하는 Fahrenheit 프로젝트를 공동으로 시작했다. 1998년에는 휴렛 팩커드도 이 프로젝트에 합류했다.[24] 이 프로젝트는 초기에 3D 그래픽 API 분야에 질서를 가져올 가능성을 보여주었으나, SGI의 재정적 어려움, 마이크로소프트의 전략적 판단 변화, 그리고 업계 전반의 지원 부족으로 인해 결국 1999년에 중단되었다.[25]

2006년 7월, OpenGL ARB는 OpenGL API 표준의 제어권을 크로노스 그룹(Khronos Group)에 이전하기로 투표했다.[26][27] 이는 OpenGL 역사에서 중요한 전환점이 되었다.

다음은 1992년부터 2006년까지 발표된 주요 OpenGL 버전과 기능이다.

OpenGL 버전 기록 (1.0 ~ 2.1)
버전출시일주요 기능
1.01992년 6월 30일최초 버전 출시
1.11997년 3월 4일텍스처 객체, 정점 배열
1.21998년 3월 16일3D 텍스처, BGRA 및 패킹된 픽셀 형식, 이미징 하위 집합 도입
1.2.11998년 10월 14일ARB 확장 개념 도입
1.32001년 8월 14일큐브맵 텍스처링, 다중 샘플링, 텍스처 압축
1.42002년 7월 24일깊이 텍스처, GL슬랭(GLSlang)
1.52003년 7월 29일정점 버퍼 객체(VBO), 폐색 쿼리
2.02004년 9월 7일GLSL 1.1, 다중 렌더 대상, 비-2의 거듭제곱 텍스처, 포인트 스프라이트, 양면 스텐실
2.12006년 7월 2일GLSL 1.2, 픽셀 버퍼 객체(PBO), sRGB 텍스처


2. 3. 크로노스 그룹으로의 관리 이관 (2006년 ~ 현재)

2006년 7월, OpenGL 아키텍처 검토 위원회는 OpenGL API 표준의 제어권을 크로노스 그룹(Khronos Group)에 이전하기로 결정했다.[26][27] 이후 OpenGL 사양의 새로운 버전은 크로노스 그룹에서 출시하며, 각 버전은 다양한 새로운 기능을 지원하도록 API를 확장한다. 각 버전의 세부 사항은 그래픽 처리 장치(GPU) 제조업체, 운영 체제 설계자, 그리고 모질라(Mozilla) 및 구글(Google)과 같은 일반 기술 회사를 포함하는 그룹 구성원 간의 합의에 의해 결정된다.[11]

크로노스 그룹으로 관리 이관된 이후에도 OpenGL은 꾸준히 발전해왔다. 2006년 2.1 버전부터 2017년 4.6 버전까지 여러 차례 업데이트가 이루어졌으며, 주요 업데이트 내용은 다음과 같다.

OpenGL 버전 기록 (2.1 이후)
버전출시일주요 기능
2.12006년 7월 2일GLSL 1.2, 픽셀 버퍼 객체(PBO), sRGB 텍스처
3.02008년 8월 11일GLSL 1.3, 텍스처 배열, 조건부 렌더링, 프레임 버퍼 객체(FBO)
3.12009년 3월 24일GLSL 1.4, 인스턴싱, 텍스처 버퍼 객체, 균일 버퍼 객체, 프리미티브 재시작
3.22009년 8월 3일GLSL 1.5, 지오메트리 셰이더, 다중 샘플링 텍스처
3.32010년 3월 11일GLSL 3.30, OpenGL 4.0 사양에서 가능한 한 많은 기능을 백포트
4.02010년 3월 11일GLSL 4.00, GPU 테셀레이션, 64비트 정밀도 셰이더
4.12010년 7월 26일GLSL 4.10, 개발자 친화적인 디버그 출력, OpenGL ES 2.0과의 호환성
4.22011년 8월 8일GLSL 4.20, 원자 카운터가 있는 셰이더, 변환 피드백 인스턴스 그리기, 셰이더 패킹, 성능 개선
4.32012년 8월 6일GLSL 4.30, GPU 병렬 처리를 활용하는 컴퓨트 셰이더, 셰이더 스토리지 버퍼 객체, 고품질 ETC2/EAC 텍스처 압축, 메모리 보안 강화, 다중 응용 프로그램 견고성 확장, OpenGL ES 3.0과의 호환성
4.42013년 7월 22일GLSL 4.40, 버퍼 배치 제어, 효율적인 비동기 쿼리, 셰이더 변수 레이아웃, 효율적인 다중 객체 바인딩, Direct3D 응용 프로그램의 간소화된 포팅, 바인드리스 텍스처 확장, 희소 텍스처 확장
4.52014년 8월 11일GLSL 4.50, 직접 상태 접근(DSA), 플러시 제어, 견고성, OpenGL ES 3.1 API 및 셰이더 호환성, DX11 에뮬레이션 기능
4.62017년 7월 31일GLSL 4.60, 보다 효율적인 지오메트리 처리 및 셰이더 실행, 더 많은 정보, 오류 컨텍스트 없음, 폴리곤 오프셋 클램프, SPIR-V, 이방성 필터링



코어 API에서 요구하는 기능 외에도, GPU 공급업체는 '확장(extension)' 형태로 추가 기능을 제공할 수 있다. 확장은 새로운 함수와 상수를 도입하거나 기존 함수의 제한을 완화하여 OpenGL의 유연성을 높인다. 모든 확장은 OpenGL 레지스트리에 수집 및 정의된다.[12] 확장은 개발 회사 이름 기반의 식별자(예: 엔비디아(Nvidia)의 NV)를 가지며[13], 여러 공급업체가 동의한 확장은 EXT, 크로노스 그룹의 승인을 받은 확장은 ARB 식별자를 사용한다.[14] OpenGL의 새로운 버전 기능은 주로 널리 구현된 ARB 또는 EXT 확장 기능들을 통합하여 구성된다.

그러나 OpenGL은 더 이상 활발하게 개발되지 않고 있다. 가장 최신 버전인 4.6은 2017년에 출시되었으며, 이는 이전 버전 출시 후 3년 만의 업데이트였고 기존 확장 기능을 코어 프로파일에 포함하는 수준에 그쳤다.[61] 2016년에 출시된 Vulkan API가 OpenGL의 활발한 개발을 대체했으며, 초기에는 glNext라는 코드명으로 불렸다. 2017년 크로노스 그룹OpenGL ES의 새로운 버전 개발 중단을 발표하고[6] Vulkan 및 다른 기술 개발에 집중하고 있다.[7][8] 이로 인해 레이 트레이싱과 같은 최신 GPU 기능은 OpenGL 표준에서 지원되지 않지만, 공급업체별 확장을 통해 지원될 수는 있다.[9][10]

Vulkan과 같은 후속 API의 등장과 주요 기업들의 지원 축소에도 불구하고, OpenGL은 여전히 널리 사용되는 표준으로 남아 있다. 이는 새로운 확장 기능 및 드라이버 최적화를 통한 지속적인 개발 노력, 플랫폼 간 호환성, 그리고 ANGLE 및 Zink와 같은 호환성 계층 덕분이다. 이 계층들은 OpenGL이 Vulkan이나 Metal 위에서 효율적으로 실행되도록 하여 개발자들이 계속 사용하거나 점진적으로 전환할 경로를 제공한다.[28][29]

그래픽 API 환경 변화에 따라 일부 기업들은 OpenGL 지원을 축소하거나 중단하고 있다. 2018년 6월, 애플(Apple Inc.)은 모든 플랫폼(iOS, macOS, tvOS)에서 OpenGL API 지원을 중단하고 자체 API인 Metal 사용을 권장했다.[30] 게임 개발사들도 새로운 API를 채택하고 있다. id 소프트웨어(id Software)는 id Tech 7 엔진에서 Vulkan으로 전환했고[33], 밸브 코퍼레이션(Valve Corporation)은 도타 2에서 OpenGL 지원을 제거했다.[35] Atypical Games는 삼성의 지원을 받아 비 애플 플랫폼에서 Vulkan을 사용하도록 게임 엔진을 업데이트했다.[36]

크로노스 그룹이 OpenGL 개발을 사실상 중단했다는 시각도 있으나[7][8], 공식적인 지원 종료 발표는 없었다. 구글의 퓨시아(Fuchsia) OS는 기본적으로 Vulkan을 사용하지만, ANGLE 변환 계층을 통해 Vulkan 위에서 OpenGL을 지원할 계획이다.[37]

2. 4. OpenGL 버전별 세부 확장

OpenGL 사양의 새로운 버전은 크로노스 그룹에서 출시하며, 각 버전은 다양한 새로운 기능을 지원하도록 API를 확장한다.[11] 각 버전의 세부 사항은 그래픽 카드 제조업체, 운영 체제 설계자, 그리고 모질라(Mozilla) 및 구글(Google)과 같은 일반 기술 회사를 포함하는 그룹 구성원 간의 합의에 의해 결정된다.[11]

코어 API에서 요구하는 기능 외에도, 그래픽 처리 장치(GPU) 공급업체는 ''확장''(extension) 형태로 추가 기능을 제공할 수 있다. 확장은 새로운 함수와 새로운 상수를 도입할 수 있으며, 기존 OpenGL 함수에 대한 제한을 완화하거나 제거할 수 있다. 공급업체는 다른 공급업체 또는 크로노스 그룹 전체의 지원 없이도 사용자 지정 API를 노출하기 위해 확장을 사용할 수 있으며, 이는 OpenGL의 유연성을 크게 향상시킨다. 모든 확장은 OpenGL 레지스트리에 수집되어 정의된다.[12]

각 확장은 이를 개발한 회사의 이름을 기반으로 하는 짧은 식별자와 연결된다. 예를 들어, 엔비디아(Nvidia)의 식별자는 NV이며, 이는 확장 이름 GL_NV_half_float, 상수 GL_HALF_FLOAT_NV 및 함수 glVertex2hNV()의 일부이다.[13] 여러 공급업체가 동일한 API를 사용하여 동일한 기능을 구현하는 데 동의하면, 식별자 EXT를 사용하여 공유 확장이 릴리스될 수 있다. 이러한 경우, 크로노스 그룹의 아키텍처 검토 위원회(Architecture Review Board, ARB)가 해당 확장에 대한 명시적인 승인을 제공하는 경우도 있으며, 이 경우 식별자 ARB가 사용된다.[14]

OpenGL의 각 새로운 버전에서 도입된 기능은 일반적으로 ARB 또는 EXT 유형의 여러 널리 구현된 확장의 결합된 기능으로 구성된다. OpenGL의 첫 번째 버전인 1.0 버전은 1992년 6월 30일에 마크 세갈(Mark Segal)과 커트 에이클리(Kurt Akeley)에 의해 출시된 이후, 사양의 새로운 버전을 통해 꾸준히 확장되어 왔다. 이러한 릴리스는 모든 호환 그래픽 카드가 지원해야 하는 기본 기능 집합을 정의하며, 이를 기반으로 새로운 확장을 더 쉽게 작성할 수 있도록 돕는다.

OpenGL은 2001년부터 2014년까지 주로 매년 업데이트되었으나, 가장 최신 사양인 4.6 버전은 2017년에 출시된 이후 활발한 개발이 이루어지지 않고 있다.[61] 이는 2016년에 출시된 Vulkan API로 개발 초점이 옮겨갔기 때문이다.[6][7][8] 그 결과, 레이 트레이싱과 같은 최신 GPU 기능은 OpenGL 표준에서 지원되지 않지만, 공급업체별 확장을 통해 여전히 새로운 기능이 제공될 수 있다.[9][10] 각 버전별 주요 기능과 통합된 확장 기능에 대한 자세한 내용은 해당 버전의 하위 섹션에서 다룬다.

2. 4. 1. OpenGL 1.1

[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_copy_texture.txt EXT_copy_texture]Extension #9
Extension #10[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_object.txt EXT_texture_object]Extension #20[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_vertex_array.txt EXT_vertex_array]Extension #30[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_blend_logic_op.txt EXT_blend_logic_op]Extension #39


2. 4. 2. OpenGL 1.2

1998년 3월 16일에 출시되었다.[226] 주요 변경 사항은 다음과 같다.

1998년 10월 14일에는 1.2.1 버전이 출시되어 ARB 확장 개념이 도입되었다.

OpenGL 1.2는 다음 확장을 코어 기능으로 통합했다.

확장 이름정렬 번호
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture3D.txt EXT_texture3D]확장 #6
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_pixels.txt EXT_packed_pixels]확장 #23
[https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_lod.txt SGIS_texture_lod]확장 #24
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_rescale_normal.txt EXT_rescale_normal]확장 #27
[https://www.khronos.org/registry/OpenGL/extensions/SGIS/SGIS_texture_edge_clamp.txt SGIS_texture_edge_clamp]확장 #35
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_range_elements.txt EXT_draw_range_elements]확장 #112
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_bgra.txt EXT_bgra]확장 #129
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_separate_specular_color.txt EXT_separate_specular_color]확장 #144


2. 4. 3. OpenGL 1.2.1

1998년 10월 14일에 출시되었다. 이 버전의 가장 큰 특징은 ARB 확장 개념을 도입한 것이다.

OpenGL 확장은 GPU 공급업체가 코어 API에서 요구하는 기능 외에 추가적인 기능을 제공하는 방법이다.[12] 확장을 통해 새로운 함수나 상수를 도입할 수 있으며, 기존 OpenGL 함수의 제한을 완화하거나 제거할 수도 있다. 공급업체는 다른 공급업체나 크로노스 그룹 전체의 지원 없이도 자체적인 API를 노출하기 위해 확장을 사용할 수 있다.[12] 모든 확장은 OpenGL 레지스트리에 수집되어 정의된다.[12]

각 확장은 이를 개발한 회사의 이름을 기반으로 하는 짧은 식별자와 연결된다. 예를 들어, 엔비디아(Nvidia)의 식별자는 NV이다.[13] 여러 공급업체가 동일한 API를 사용하여 동일한 기능을 구현하는 데 동의하면, 식별자 EXT를 사용하여 공유 확장이 릴리스될 수 있다. 이러한 경우, 크로노스 그룹의 아키텍처 검토 위원회(Architecture Review Board, ARB)가 해당 확장에 대한 명시적인 승인을 제공하는 경우도 있으며, 이 경우 식별자 ARB가 사용된다.[14] OpenGL 1.2.1에서 도입된 ARB 확장 개념은 이렇게 공식적으로 승인된 확장을 의미하며, 이후 OpenGL 버전 업데이트 시 이러한 ARB 확장들이 코어 기능으로 통합되는 경우가 많다.

2. 4. 4. OpenGL 1.3

ARB_texture_env_combine
ARB_texture_env_dot3ARB Extension #6
ARB Extension #17
ARB Extension #19ARB_texture_compressionARB Extension #12ARB_texture_border_clampARB Extension #13


2. 4. 5. OpenGL 1.4

2002년 7월 24일에 출시되었다.[226] 주요 기능으로 깊이 텍스처, GL슬랭 지원이 추가되었다.

2. 4. 6. OpenGL 1.5

2003년 7월 29일에 출시되었다. 이 버전에서는 정점 버퍼 객체(VBO)와 폐색 쿼리 기능이 새롭게 추가되었다.

주요 추가 기능과 관련된 확장은 다음과 같다.

확장 이름종류 및 번호
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_buffer_object.txt ARB_vertex_buffer_object]ARB Extension #28
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt ARB_occlusion_query]ARB Extension #29
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shadow_funcs.txt EXT_shadow_funcs]Extension #267


2. 4. 7. OpenGL 2.0

2004년 9월 7일에 출시되었다. 주요 특징은 다음과 같다.[226]

2. 4. 8. OpenGL 2.1

2006년 7월 2일에 출시되었다. 이 버전에서는 GLSL 버전이 1.2로 업데이트되었으며, 픽셀 버퍼 객체(PBO, Pixel Buffer Object)와 sRGB 텍스처 기능이 추가되었다.

다음은 OpenGL 2.1에 통합된 주요 확장 기능이다.

확장 이름분류 번호
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_pixel_buffer_object.txt ARB_pixel_buffer_object]ARB 확장 #42
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB.txt EXT_texture_sRGB]확장 #315


2. 4. 9. OpenGL 3.0

OpenGL 3.0은 2008년 8월 11일에 출시되었다. 이 버전은 GLSL 1.3 버전을 지원하며, 주요 기능으로는 텍스처 배열, 조건부 렌더링, 프레임 버퍼 객체(FBO) 등이 도입되었다.

OpenGL 3.0의 코어 프로파일에서는 이전 버전에서 사용되던 일부 기능들이 폐지 예정(deprecated)으로 지정되었다. 대표적으로 프리미티브 그리기를 기록하고 재생하는 Display List 기능과, `glBegin()`/`glEnd()` 블록을 사용하여 프리미티브를 그리는 방식이 이에 해당한다[108]。이는 API를 현대화하고 효율성을 높이기 위한 변화였다.

OpenGL 3.0은 여러 확장 기능들을 표준 사양으로 통합했다. 주요 통합된 확장 기능들은 다음과 같다.

확장 (Extension)세부 내용
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_gpu_shader4.txt EXT_gpu_shader4]Extension #326
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_color_buffer_float.txt ARB_color_buffer_float]ARB Extension #39
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_pixel.txt ARB_half_float_pixel]ARB Extension #40
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_float.txt ARB_texture_float]ARB Extension #41
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_buffer_float.txt ARB_depth_buffer_float]ARB Extension #43
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_object.txt ARB_framebuffer_object]ARB Extension #45
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_half_float_vertex.txt ARB_half_float_vertex]ARB Extension #48
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_range.txt ARB_map_buffer_range]ARB Extension #50
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rg.txt ARB_texture_rg]ARB Extension #53
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_object.txt ARB_vertex_array_object]ARB Extension #54
[https://www.khronos.org/registry/OpenGL/extensions/ARB/GLX_ARB_create_context.txt GLX_ARB_create_context]ARB Extension #56 (GLX_ARB_create_context), ARB Extension #75 (GLX_ARB_create_context_profile)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_object.txt ARB_framebuffer_object]ARB Extension #45
[https://www.khronos.org/registry/OpenGL/extensions/NV/NV_half_float.txt NV_half_float]Extension #283
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_object.txt EXT_framebuffer_object]Extension #310
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_depth_stencil.txt EXT_packed_depth_stencil]Extension #312
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_blit.txt EXT_framebuffer_blit]
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_multisample.txt EXT_framebuffer_multisample]
Extension #316, #317
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_packed_float.txt EXT_packed_float]Extension #328
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_array.txt EXT_texture_array]Extension #329
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_compression_rgtc.txt EXT_texture_compression_rgtc]OpenGL Extension #332
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_shared_exponent.txt EXT_texture_shared_exponent]Extension #333
[https://www.khronos.org/registry/OpenGL/extensions/NV/NV_depth_buffer_float.txt NV_depth_buffer_float]Extension #334
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_sRGB.txt EXT_framebuffer_sRGB]Extension #337
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_buffers2.txt EXT_draw_buffers2]Extension #340
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_integer.txt EXT_texture_integer]Extension #343
[https://www.khronos.org/registry/OpenGL/extensions/NV/NV_conditional_render.txt NV_conditional_render]OpenGL Extension #346
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_transform_feedback.txt EXT_transform_feedback]Extension #352


2. 4. 10. OpenGL 3.1

OpenGL 3.1은 2009년 3월 24일에 출시되었으며, GLSL 1.4 버전을 지원한다. 이 버전에서는 인스턴싱(Instancing), 텍스처 버퍼 객체(Texture Buffer Objects), 균일 버퍼 객체(Uniform Buffer Objects), 프리미티브 재시작(Primitive Restart) 등의 주요 기능이 추가되었다.

OpenGL 3.1에 통합된 주요 확장 기능은 다음과 같다.

확장 (Extension)세부 정보 (Details)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rectangle.txt ARB_texture_rectangle]ARB Extension #38
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_instanced.txt ARB_draw_instanced]ARB Extension #44
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object.txt ARB_texture_buffer_object]ARB Extension #51
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt ARB_uniform_buffer_object]ARB Extension #57
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_buffer.txt ARB_copy_buffer]ARB Extension #59
[https://www.khronos.org/registry/OpenGL/extensions/NV/NV_primitive_restart.txt NV_primitive_restart]Extension Number 285
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_snorm.txt EXT_texture_snorm]Extension Number 365


2. 4. 11. OpenGL 3.2

OpenGL 3.2는 2009년 8월 3일에 출시되었다. 이 버전은 GLSL 1.5 버전을 지원하며, 주요 기능으로 지오메트리 셰이더와 다중 샘플링 텍스처가 도입되었다.

OpenGL 3.2는 다음과 같은 크로노스 그룹의 ARB(Architecture Review Board) 확장들을 코어 기능으로 통합했다.

확장 (Extension)세부 내용 (Details)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_geometry_shader4.txt ARB_geometry_shader4]
(크게 수정됨)
ARB 확장 #47 (NVIDIA 리비전: 26)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt ARB_depth_clamp]ARB 확장 #61
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_elements_base_vertex.txt ARB_draw_elements_base_vertex]ARB 확장 #62
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_coord_conventions.txt ARB_fragment_coord_conventions]ARB 확장 #63
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_provoking_vertex.txt ARB_provoking_vertex]ARB 확장 #64
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_seamless_cube_map.txt ARB_seamless_cube_map]ARB 확장 #65
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sync.txt ARB_sync]ARB 확장 #66
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_multisample.txt ARB_texture_multisample]ARB 확장 #67
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_array_bgra.txt ARB_vertex_array_bgra]ARB 확장 #68


2. 4. 12. OpenGL 3.3

OpenGL 3.3은 2010년 3월 11일에 출시되었다. 이 버전은 GLSL 3.30 버전을 지원하며, OpenGL 4.0 사양의 기능 중 가능한 많은 부분을 이전 버전에서도 사용할 수 있도록 가져오는 것(백포트)에 중점을 두었다.

OpenGL 3.3 코어 프로파일에 통합된 주요 ARB 확장 기능은 다음과 같다.

확장 기능 (Extension)세부 내용 (Details)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_instanced_arrays.txt ARB_instanced_arrays]ARB Extension #49
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_blend_func_extended.txt ARB_blend_func_extended]ARB Extension #78
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_attrib_location.txt ARB_explicit_attrib_location]ARB Extension #79
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query2.txt ARB_occlusion_query2]ARB Extension #80
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sampler_objects.txt ARB_sampler_objects]ARB Extension #81
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_bit_encoding.txt ARB_shader_bit_encoding]ARB Extension #82
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_rgb10_a2ui.txt ARB_texture_rgb10_a2ui]ARB Extension #83
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_swizzle.txt ARB_texture_swizzle]ARB Extension #84
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_timer_query.txt ARB_timer_query]ARB Extension #85
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_2_10_10_10_rev.txt ARB_vertex_type_2_10_10_10_rev]ARB Extension #86


2. 4. 13. OpenGL 4.0

OpenGL 4.0은 2010년 3월 11일에 출시되었으며, GLSL 4.00 버전을 지원한다. 주요 기능으로는 GPU 테셀레이션과 64비트 정밀도 셰이더 지원이 추가되었다.

다음은 OpenGL 4.0에 포함된 주요 확장 기능 목록이다.

확장 기능상세 내용
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_buffers_blend.txt ARB_draw_buffers_blend]ARB 확장 #69
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sample_shading.txt ARB_sample_shading]ARB 확장 #70
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_cube_map_array.txt ARB_texture_cube_map_array]ARB 확장 #71
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_gather.txt ARB_texture_gather]ARB 확장 #72
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_lod.txt ARB_texture_query_lod]ARB 확장 #73
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_draw_indirect.txt ARB_draw_indirect]ARB 확장 #87
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt ARB_gpu_shader5]ARB 확장 #88
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader_fp64.txt ARB_gpu_shader_fp64]ARB 확장 #89
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_subroutine.txt ARB_shader_subroutine]ARB 확장 #90
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_tessellation_shader.txt ARB_tessellation_shader]ARB 확장 #91
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_object_rgb32.txt ARB_texture_buffer_object_rgb32]ARB 확장 #92
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback2.txt ARB_transform_feedback2]ARB 확장 #93
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback3.txt ARB_transform_feedback3]ARB 확장 #94


2. 4. 14. OpenGL 4.1

OpenGL 4.1은 2010년 7월 26일에 출시되었으며, GLSL 4.10 버전을 지원한다.

주요 기능으로는 개발자 친화적인 디버그 출력 기능과 OpenGL ES 2.0과의 호환성 향상이 있다.

다음은 OpenGL 4.1에 포함된 주요 확장 기능이다.

확장세부 정보
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES2_compatibility.txt ARB_ES2_compatibility]ARB Extension #95
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_program_binary.txt ARB_get_program_binary]ARB Extension #96
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_separate_shader_objects.txt ARB_separate_shader_objects]ARB Extension #97
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_precision.txt ARB_shader_precision]ARB Extension #98
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_attrib_64bit.txt ARB_vertex_attrib_64bit]ARB Extension #99
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_viewport_array.txt ARB_viewport_array]ARB Extension #100


2. 4. 15. OpenGL 4.2

2011년 8월 8일에 출시되었다.[227] 이 버전은 GLSL 4.20을 지원하며, 다음과 같은 주요 기능이 추가되었다.

OpenGL 4.2는 여러 ARB 확장을 코어 기능으로 통합했다. 주요 관련 확장은 다음과 같다.

확장 이름세부 정보
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_compression_bptc.txt ARB_texture_compression_bptc]ARB Extension #77
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compressed_texture_pixel_storage.txt ARB_compressed_texture_pixel_storage]ARB Extension #110
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_atomic_counters.txt ARB_shader_atomic_counters]ARB Extension #114 (원자 카운터 관련)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage.txt ARB_texture_storage]ARB Extension #117
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_transform_feedback_instanced.txt ARB_transform_feedback_instanced]ARB Extension #109 (변환 피드백 인스턴스 그리기 관련)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_base_instance.txt ARB_base_instance]ARB Extension #107
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_load_store.txt ARB_shader_image_load_store]ARB Extension #115
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conservative_depth.txt ARB_conservative_depth]ARB Extension #111
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_420pack.txt ARB_shading_language_420pack]ARB Extension #108 (GLSL 4.20 패킹 관련)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_internalformat_query.txt ARB_internalformat_query]ARB Extension #112
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_map_buffer_alignment.txt ARB_map_buffer_alignment]ARB Extension #113
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shading_language_packing.txt ARB_shading_language_packing]ARB Extension #116 (셰이더 패킹 관련)


2. 4. 16. OpenGL 4.3

''출시일:'' 2012년 8월 6일[228]

GLSL 4.30 버전을 지원한다. 주요 기능으로는 GPU 병렬 처리를 활용하는 컴퓨트 셰이더, 셰이더 스토리지 버퍼 객체, 고품질 ETC2/EAC 텍스처 압축, 메모리 보안 강화, 다중 응용 프로그램 견고성 확장, OpenGL ES 3.0과의 호환성 등이 있다.

다음은 OpenGL 4.3과 함께 도입된 확장 기능 목록이다.

ExtensionDetails
[https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt KHR_debug]ARB Extension #119
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_arrays_of_arrays.txt ARB_arrays_of_arrays]ARB Extension #120
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_buffer_object.txt ARB_clear_buffer_object]ARB Extension #121
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_shader.txt ARB_compute_shader]ARB Extension #122
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_copy_image.txt ARB_copy_image]ARB Extension #123
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_view.txt ARB_texture_view]ARB Extension #124
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_attrib_binding.txt ARB_vertex_attrib_binding]ARB Extension #125
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_compatibility.txt ARB_ES3_compatibility]ARB Extension #127
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_explicit_uniform_location.txt ARB_explicit_uniform_location]ARB Extension #128
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_layer_viewport.txt ARB_fragment_layer_viewport]ARB Extension #129
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_framebuffer_no_attachments.txt ARB_framebuffer_no_attachments]ARB Extension #130
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_internalformat_query2.txt ARB_internalformat_query2]ARB Extension #131
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_invalidate_subdata.txt ARB_invalidate_subdata]ARB Extension #132
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_draw_indirect.txt ARB_multi_draw_indirect]ARB Extension #133
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_program_interface_query.txt ARB_program_interface_query]ARB Extension #134
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_robust_buffer_access_behavior.txt ARB_robust_buffer_access_behavior]ARB Extension #135
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_image_size.txt ARB_shader_image_size]ARB Extension #136
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_storage_buffer_object.txt ARB_shader_storage_buffer_object]ARB Extension #137
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_stencil_texturing.txt ARB_stencil_texturing]ARB Extension #138
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_buffer_range.txt ARB_texture_buffer_range]ARB Extension #139
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_query_levels.txt ARB_texture_query_levels]ARB Extension #140
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_storage_multisample.txt ARB_texture_storage_multisample]ARB Extension #141


2. 4. 17. OpenGL 4.4

2013년 7월 22일에 출시되었다.[229] GLSL 버전은 4.40이다.

주요 기능은 다음과 같다:

OpenGL 4.4와 관련된 주요 크로노스 그룹 승인 확장(ARB Extensions)은 다음과 같다.

확장 (Extension)세부사항 (Details)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_buffer_storage.txt ARB_buffer_storage]ARB Extension #144
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clear_texture.txt ARB_clear_texture]ARB Extension #145
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_enhanced_layouts.txt ARB_enhanced_layouts]ARB Extension #146
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_multi_bind.txt ARB_multi_bind]ARB Extension #147
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_query_buffer_object.txt ARB_query_buffer_object]ARB Extension #148
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_mirror_clamp_to_edge.txt ARB_texture_mirror_clamp_to_edge]ARB Extension #149
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_stencil8.txt ARB_texture_stencil8]ARB Extension #150
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_vertex_type_10f_11f_11f_rev.txt ARB_vertex_type_10f_11f_11f_rev]ARB Extension #151


2. 4. 18. OpenGL 4.5

OpenGL 4.5는 2014년 8월 11일에 출시되었으며,[230][231] GLSL 4.50 버전을 지원한다.

주요 기능은 다음과 같다:

OpenGL 4.5는 여러 기존 확장 기능들을 코어 표준으로 통합했다. 주요 통합된 확장 기능은 아래 표와 같다.

확장 (Extension)세부 내용 (Details)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_ES3_1_compatibility.txt ARB_ES3_1_compatibility]ARB Extension #159 (OpenGL ES 3.1 호환성)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_clip_control.txt ARB_clip_control]ARB Extension #160 (클립 공간의 깊이 범위 및 원점 제어)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conditional_render_inverted.txt ARB_conditional_render_inverted]ARB Extension #161 (조건부 렌더링 조건 반전)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_cull_distance.txt ARB_cull_distance]ARB Extension #162 (사용자 정의 클립 평면을 이용한 컬링 거리 지정)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_derivative_control.txt ARB_derivative_control]ARB Extension #163 (셰이더 내 미분 계산 방식 제어)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_direct_state_access.txt ARB_direct_state_access]ARB Extension #164 (직접 상태 접근)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_get_texture_sub_image.txt ARB_get_texture_sub_image]ARB Extension #165 (텍스처의 특정 영역 데이터 읽기)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_texture_image_samples.txt ARB_shader_texture_image_samples]ARB Extension #166 (셰이더에서 텍스처 이미지의 샘플 수 조회)
[https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_texture_barrier.txt ARB_texture_barrier]ARB Extension #167 (셰이더 쓰기 후 텍스처 메모리 접근 동기화)
[https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_context_flush_control.txt KHR_context_flush_control]ARB Extension #168 (컨텍스트 플러시 제어)
[https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_robustness.txt KHR_robustness]ARB Extension #170 (견고성 및 오류 복구 기능)
[https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_integer_mix.txt EXT_shader_integer_mix]OpenGL Extension #437 (셰이더에서 정수형 데이터 혼합 함수 지원)


2. 4. 19. OpenGL 4.6

GLSL 4.60 버전을 지원하며, 2017년 7월 31일에 출시되었다.[230][232][233] OpenGL 4.6은 주로 기존의 11개 ARB 및 EXT 확장을 코어 프로파일에 통합하는 데 중점을 두었다.[61] 주요 추가 기능으로는 보다 효율적인 지오메트리 처리 및 셰이더 실행, 오류 컨텍스트 없음(KHR_no_error), 폴리곤 오프셋 클램프(ARB_polygon_offset_clamp), SPIR-V, 이방성 필터링(ARB_texture_filter_anisotropic) 등이 있다.

OpenGL 4.6에 통합된 확장 기능은 다음과 같다.

확장 기능세부 내용
ARB_indirect_parametersARB 확장 #154
ARB_shader_draw_parametersARB 확장 #156
ARB_shader_group_voteARB 확장 #157
ARB_pipeline_statistics_queryARB 확장 #171
ARB_transform_feedback_overflow_queryARB 확장 #173
KHR_no_errorARB 확장 #175
ARB_shader_atomic_counter_opsARB 확장 #182
ARB_gl_spirvARB 확장 #190
ARB_polygon_offset_clampARB 확장 #193
ARB_spirv_extensionsARB 확장 #194
ARB_texture_filter_anisotropicARB 확장 #195


3. 설계

OpenGL 규격은 2차원 및 3차원 그래픽을 그리기 위한 추상적인 API를 정의한다. 이 API는 주로 하드웨어 가속 (예: GPU)을 통해 구현되도록 설계되었지만, CPU에서 실행되는 소프트웨어만으로도 구현할 수 있다.[18][19] API 자체는 클라이언트 프로그램에서 호출할 수 있는 여러 함수들과, `GL_TEXTURE_2D` (십진수 3553에 해당)와 같은 명명된 정수 상수들로 구성된다. 함수 정의는 표면적으로 C 언어와 유사하지만, 실제로는 특정 프로그래밍 언어에 종속되지 않는다.

이러한 언어 독립성 덕분에 OpenGL은 다양한 언어 바인딩을 가지고 있다. 대표적으로 웹 브라우저용 WebGL (JavaScript 바인딩, OpenGL ES 2.0 기반), WGL, GLX, CGL (C 바인딩), iOS 및 Java/Android 환경에서 제공하는 C 바인딩 등이 있다. API 구현은 주로 하드웨어 제조사나 운영체제가 제공하는 장치 드라이버를 통해 이루어진다.

OpenGL은 언어뿐만 아니라 플랫폼 간에도 독립적인 크로스 플랫폼 API이다. 규격 자체는 OpenGL 컨텍스트를 얻거나 관리하는 방법, 즉 특정 윈도우 시스템과의 상호작용에 대해서는 명시하지 않고, 각 운영체제나 환경의 구현에 맡긴다. 따라서 OpenGL은 순수하게 렌더링 작업에만 집중하며, 입력 처리, 오디오 재생, 창 관리와 같은 기능은 제공하지 않는다.

OpenGL은 프로그래머에게 단일 API를 제공함으로써 서로 다른 3차원 가속기 간의 복잡한 상호작용을 단순화하고, 모든 구현체가 완전한 OpenGL 기능 집합을 지원하도록 (필요하다면 소프트웨어 에뮬레이션을 통해서라도) 강제함으로써 하드웨어 플랫폼 간의 성능 및 기능 차이를 감추는 것을 목표로 한다. 렌더링 장치의 구체적인 구현을 숨기는 추상화 계층 역할을 하여 높은 이식성을 제공하며, 하드웨어 가속을 통해 고속 렌더링이 가능하다.

OpenGL은 SGI를 시작으로 다양한 UNIX 워크스테이션, Linux, FreeBSD, Windows, macOS 등 여러 플랫폼에서 사용할 수 있다. 모바일 기기 및 임베디드 시스템을 위한 서브셋 버전인 OpenGL ES와 안전 필수 시스템용 OpenGL SC 규격도 존재한다.[85] 오픈 표준으로 공개되어 다양한 환경에서 널리 사용되며, 풍부한 보조 라이브러리가 존재한다.

초기 버전에서는 게임 개발에 필요한 기능 지원이 부족했지만, OpenGL 2.0에서 고수준 셰이딩 언어인 GLSL을 표준화하고 이후 버전을 거치며 기능을 보강하여 OpenGL 4.3 이후에는 Direct3D 11과 기능적으로 큰 차이가 없어졌다. 그러나 설계 사상의 차이로 인해 완벽한 상호 호환성은 없으며, 성능은 하드웨어 및 드라이버 최적화 수준에 따라 달라진다.[87]

OpenGL은 화면(프레임 버퍼)에 그리는 것을 전제로 설계되었으며, 폴리곤과 같은 기본 도형을 래스터화하여 3D 그래픽을 실시간으로 구현한다. 레이 트레이싱과 같은 방식은 표준으로 지원하지 않는다. 깊이 정보를 위한 뎁스 버퍼, 마스크 처리를 위한 스텐실 버퍼, 고정밀 색상 합성을 위한 축적 버퍼 등을 지원한다. 프로그래머블 셰이더의 도입으로 표현력이 크게 향상되었다.

하지만 OpenGL은 오래된 API 설계를 유지하고 있어 최신 하드웨어의 성능을 완전히 활용하기 어렵고, 장치 드라이버 구현의 품질 관리 등에도 문제를 안고 있다는 비판이 있다.[150][151][152] 2016년 후속 API인 Vulkan이 발표된 이후로는 OpenGL의 주요 업데이트가 거의 이루어지지 않고 있다.

3. 1. 그래픽 파이프라인

그래픽 파이프라인 공정


OpenGL의 동작은 , , 다각형과 같은 기본 도형을 그리고, 이를 픽셀 형식으로 변환하는 것을 허용한다. 이러한 일은 OpenGL 상태 머신(OpenGL State Machine)이라는 그래픽스 파이프라인을 통하여 이루어진다.

4. 예제

wiki



glClear( GL_COLOR_BUFFER_BIT );



이 문장은 색상 버퍼를 지워 화면을 빈 화면으로 만든다.



glMatrixMode( GL_PROJECTION ); /* 뒤이어 나타나는 행렬 명령이 투영행렬에 영향을 줌 */

glLoadIdentity(); /* 투영행렬을 단위 행렬로 초기화 함 */

glFrustum( -1, 1, -1, 1, 1, 1000 ); /* 투시투영행렬을 적용시킴 */



위 문장은 투영행렬을 초기화한 후, 가시 영역을 표현하는 행렬로 삼차원 절두체 행렬을 사용한다는 명령이다. 이 행렬은 카메라에 상대적인 공간에서 표현되는 객체를 OpenGL의 투영 공간으로 변환시키는 역할을 한다.



glMatrixMode( GL_MODELVIEW ); /* 뒤이어 나타나는 행렬 명령이 모델뷰행렬에 영향을 줌 */

glLoadIdentity(); /* 모델뷰행렬을 단위행렬로 초기화 함 */

glTranslatef( 0, 0, -3 ); /* z 축으로 3 단위만큼 모델뷰를 평행이동시킴 */



위 문장은 모델뷰 행렬을 단위행렬로 초기화한다. 이 행렬은 모델에 상대적인 좌표로부터 카메라 공간으로의 변환을 정의하는 행렬이다.



glBegin( GL_POLYGON ); /* 다각형을 만든다 */

glColor3f( 0, 1, 0 ); /* 현재 색상을 녹색으로 설정한다 */

glVertex3f( -1, -1, 0 ); /* 다각형에 필요한 정점을 만든다 */

glVertex3f( -1, 1, 0 ); /* 다각형에 필요한 정점을 만든다 */

glVertex3f( 1, 1, 0 ); /* 다각형에 필요한 정점을 만든다 */

glVertex3f( 1, -1, 0 ); /* 다각형에 필요한 정점을 만든다 */

glEnd(); /* 다각형 만드는 일을 종료시킨다 */



위의 명령은 XY 평면 위에 녹색의 다각형을 그리는 작업을 수행한다.

5. 관련 기술

1980년대에는 다양한 그래픽 하드웨어에서 작동하는 소프트웨어를 개발하는 것이 매우 어려운 일이었다. 개발자들은 각기 다른 하드웨어에 맞춰 인터페이스와 드라이버를 따로 만들어야 했고, 이는 많은 비용과 노력을 요구했다.[225]

1990년대 초, 실리콘 그래픽스(SGI)는 워크스테이션용 3차원 그래픽스 분야를 선도하고 있었다. SGI의 IRIS GL API는 사실상의 산업 표준으로 자리 잡으며, 기존의 개방형 표준인 PHIGS를 무색하게 했다. IRIS GL은 사용하기 쉬웠고 즉시 모드 렌더링을 지원했지만, PHIGS는 사용하기 어렵고 기능적으로 뒤처진다는 평가를 받았다.[225]

그러나 썬 마이크로시스템즈, 휴렛 패커드, IBM 등 경쟁사들이 PHIGS 표준 기반의 3차원 하드웨어를 출시하며 SGI의 시장 점유율을 위협하기 시작했다. 이에 SGI는 시장 영향력을 유지하기 위해 자사의 IRIS GL API를 개방형 표준으로 전환하기로 결정했고, 이것이 바로 OpenGL의 시작이 되었다.[225]

5. 1. 벌칸 (Vulkan)

SIGGRAPH 2014에서 기존 OpenGL 설계를 재검토하고 처음부터 다시 구축하는 차세대 표준 3D API 규격, 'OpenGL Next Generation'(glNext)의 제정이 발표되었다. 이 새로운 API는 멀티스레드 처리와 셰이딩 중간 언어 같은 현대적인 기술 도입을 목표로 했다.[141]

이후 GDC 2015에서 이 새로운 규격의 공식 명칭이 '''벌칸'''(Vulkan|독일어로 "화산"de)으로 결정되었음이 발표되었다.[142] 벌칸은 Direct3D 12와 유사하게 커맨드 큐 기반의 멀티스레드 렌더링 기능을 지원하며, OpenCL과 프로그래밍 기반을 공유하는 SPIR-V 중간 표현[143]을 도입하는 것이 특징이다. 또한, AMD의 로우 레벨 그래픽 API인 Mantle의 요소 기술이 벌칸에 채택되었다.[144]

과거 "Next Generation OpenGL Initiative"(glNext)라는 이름으로 알려졌던 벌칸은[234][235] OpenGL과 OpenGL ES를 하나의 공통 API로 통합하려는 재설계의 결과물이다. 벌칸 API의 첫 번째 버전인 1.0은 2016년 2월 16일에 정식으로 출시되었으며[145], 기존 OpenGL 버전들과 하위 호환성을 가지지 않는다.[236][237][238]

벌칸은 하드웨어의 세부적인 제어를 가능하게 하는 로우 레벨 API이기 때문에, 개발자가 배우기 어렵고 작성해야 할 코드의 양이 많아진다는 단점이 있다. 반면, 기존의 OpenGL은 CPU와 GPU 간의 동기화 같은 복잡한 처리를 자동으로 관리해주는 상위 레벨 API로서 벌칸에 비해 배우기 쉽다는 장점이 있으며, 오랜 기간 축적된 코드 자산과 노하우를 가지고 있다. 크로노스 그룹은 벌칸 출시 초기에는 OpenGL의 유지보수와 업데이트를 지속할 예정이라고 밝혔으나[146], 2017년에 발표된 OpenGL 4.6 버전을 마지막으로 OpenGL의 새로운 버전 개발은 사실상 중단되었고, 이후에는 기존 사양의 유지보수만 이루어지고 있다.[147]

5. 2. OpenGL 지원 라이브러리

OpenGL 자체는 하드웨어 및 장치 드라이버 계층에 가까운 저수준 라이브러리다. 따라서 응용 프로그램 개발을 돕는 다양한 고수준 보조 및 확장 라이브러리가 존재한다. 특히 OpenGL 컨텍스트 생성 및 관리는 복잡하고 운영 체제마다 다르므로, 많은 라이브러리가 이 기능을 제공한다.[16] 또한 OpenGL 확장 기능을 식별하고 로드하는 작업을 자동화하는 라이브러리도 있다.

'''윈도우 생성 및 관리 툴킷'''

이러한 툴킷은 OpenGL 창을 생성 및 관리하고 키보드, 마우스 등 입력을 처리하는 데 중점을 둔다.[17]

'''멀티미디어 라이브러리'''

게임과 같은 멀티미디어 애플리케이션 개발에 유용하며, OpenGL 창 생성 기능 외에도 입력, 사운드 등의 기능을 제공한다.

'''GUI (그래픽 사용자 인터페이스) 툴킷'''

애플리케이션에 버튼, 체크박스 등 그래픽 사용자 인터페이스 요소를 추가하는 기능을 제공한다.

'''확장 로딩 라이브러리'''

OpenGL 확장 기능을 식별하고 로드하는 작업을 자동화하여 개발 편의성을 높인다.

'''기타 유틸리티 라이브러리'''

5. 3. 기타 3D 그래픽스 API

5. 4. 기타 2D 그래픽스 API

6. 문제점 및 한계

OpenGL은 여러 가지 문제점과 한계를 가지고 있다.

'''문자열 렌더링'''

OpenGL 자체에는 GDI/GDI+ (Windows)나 Core Graphics (macOS)와 같은 고수준 문자열 렌더링 API가 없다. 따라서 문자열을 표시하려면 미리 문자가 그려진 텍스처를 이용하거나, 각 운영체제 플랫폼에 맞는 API(예: Windows의 wglUseFontOutlines() 함수)와 연동해야 한다.[108] 크로스 플랫폼 유틸리티 라이브러리인 GLUT 등을 사용하면 간단한 문자열 렌더링은 가능하지만, 기능이 매우 제한적이어서 주로 디버깅 용도로 사용된다. NVIDIA는 고도의 렌더링과 글꼴 지원을 위한 GL_NV_Path_Rendering 확장을 제공하지만, 이는 표준 기능은 아니다.

이에 비해 Direct3DDirect2D나 DirectWrite와 같은 2D 및 문자열 렌더링에 특화된 API와 연동 기능이 잘 갖추어져 있어[108], 복잡한 문자열 처리에 더 유리하다.

'''멀티 GPU 지원 부족'''

Direct3D는 DXGI를 통해 시스템에 장착된 여러 GPU 중 특정 GPU를 선택하여 사용할 수 있다.[161] 이를 이용해 DirectCompute 같은 GPGPU 기술에서 여러 GPU에 작업을 분산시켜 처리 성능을 높일 수 있다. 하지만 OpenGL은 버전 4.6 기준으로 여러 GPU를 선택적으로 사용하거나 각 GPU에 리소스를 할당하는 기능이 표준화되어 있지 않다.

Windows 환경에서는 NVIDIA의 WGL_NV_gpu_affinity[162][163]AMDWGL_AMD_gpu_association[164] 같은 WGL 확장을 통해 제한적으로 멀티 GPU를 활용할 수 있지만, 이마저도 제약이 있다. 예를 들어 NVIDIA 확장은 전문가용 Quadro 카드에서만 작동하며[166], GeForce에서는 사용할 수 없다. 다른 운영체제에서는 AMD의 X 윈도 시스템GLX_AMD_gpu_association[167] 확장만 존재한다.

SLI나 CrossFire 같은 기술을 사용하면 드라이버 수준에서 렌더링 작업을 분산시킬 수 있지만, 이는 주로 게임 그래픽 성능 향상을 위한 기술이며 GPGPU 활용에는 제약이 따른다.[168][169][170] 또한 이 기술들은 메모리를 미러링하기 때문에 GPU 개수만큼 사용 가능한 메모리가 늘어나지 않는다. 반면 DirectX 12는 운영체제 차원에서 멀티 GPU를 네이티브로 지원하여, 벤더 기술에 의존하지 않고 분산 렌더링 및 메모리 통합이 가능하다.[172][173] 이러한 이유로 어도비 포토샵과 같이 OpenGL 가속을 사용하는 일부 소프트웨어는 멀티 GPU 환경을 권장하지 않기도 한다.[174][175]

'''컴퓨트 기능 사용 시 윈도우 시스템 의존성'''

DirectCompute는 CUDAOpenCL처럼 운영체제의 윈도우 시스템(사용자 인터페이스)과 직접적인 연관 없이도 컴퓨트 기능을 사용할 수 있다.[176] 즉, 화면 출력을 위한 윈도우 생성 없이도 순수하게 계산 작업만 수행할 수 있다.

하지만 OpenGL은 API를 사용하기 위해 반드시 '렌더링 컨텍스트'를 생성해야 하며, 이 컨텍스트는 운영체제의 윈도우 시스템과 관련된 서피스(화면 또는 메모리상의 그리기 영역)에 연결되어야 한다.[177][178] OpenGL 4.3부터 GPGPU를 위한 컴퓨트 셰이더가 도입되었지만, 이러한 구조적 제약 때문에 OpenGL 컴퓨트 셰이더를 사용하려면 반드시 윈도우 시스템과 연동해야 한다. 이는 시뮬레이션 결과를 화면에 바로 시각화하는 등 그래픽 연동이 필수적인 경우에는 큰 문제가 되지 않지만, 화면 출력 없이 순수하게 계산 능력만 활용하려는 경우에는 불편함이 따를 수 있다. 현재로서는 완전한 오프스크린 컴퓨팅은 OpenCL 등에 의존해야 한다.

'''멀티스레드 지원 미흡'''

Direct3D 11은 '디퍼드 컨텍스트'라는 개념을 도입하여 멀티코어 CPU 환경에서 여러 스레드를 활용해 렌더링 명령을 준비하고 실행함으로써 성능을 높일 수 있다.[179] Direct3D 12는 이를 더욱 발전시켜 멀티스레드 효율성을 극대화했다. 또한 Direct3D 11에서는 여러 스레드에서 동시에 리소스를 생성하는 것이 비교적 자유롭다.[180]

반면 OpenGL은 4.6 버전까지 이러한 네이티브 멀티스레드 렌더링 지원 기능이 부족하다. 기본적으로 OpenGL 렌더링 컨텍스트는 그것을 생성한 스레드에서만 사용할 수 있다. 다른 스레드에서 리소스를 생성하거나 사용하려면 wglShareLists() (Windows)[181][182]glXCreateContext() (Linux)[183] 같은 플랫폼 종속적인 API를 사용하여 명시적으로 컨텍스트를 공유해야 하는 번거로움이 있다. OpenGL 4.6에서 여러 셰이더를 병렬로 컴파일하는 GL_KHR_parallel_shader_compile 확장이 추가되었지만, 이는 표준 코어 기능이 아닌 확장 기능으로 제공된다.[184][185]

'''드라이버 품질 및 GLSL 컴파일러 문제'''

WindowsDirect3D 드라이버는 WHQL[186]이라는 품질 인증 시스템을 통해 일정 수준의 안정성을 보장받지만, OpenGL 커뮤니티 전체에는 오랫동안 이러한 표준화된 드라이버 인증 시스템이 부재했다. 이로 인해 그래픽 카드 제조사나 제품별로 OpenGL 드라이버의 품질 편차가 심각했으며, 이는 개발자와 사용자 모두에게 불만 요소로 작용했다.[187][188]

또한, OpenGL의 셰이딩 언어인 GLSL크로노스 그룹에서 레퍼런스 컴파일러 구현을 제공하지만[189], 셰이더 프로그램의 공통된 중간 형식(바이트코드) 사양이 없어 각 그래픽 카드 드라이버에 포함된 컴파일러가 실행 시간에 소스 코드를 직접 컴파일한다. 문제는 OpenGL 사양 자체에 모호한 부분이 존재하여[190], 제조사별 컴파일러의 동작이 미묘하게 달라 동일한 코드라도 특정 환경에서만 오류가 발생하는 등 예측 불가능한 문제를 야기하고 개발자의 부담을 가중시켰다.[191]

이러한 문제를 해결하기 위해 크로노스 그룹은 OpenGL 4.4 이후 자체적인 품질 보증 제도를 도입하여 개선을 추진하고 있다.[192] 또한 OpenGL의 후속 API인 Vulkan에서는 SPIR-V라는 표준 중간 언어를 채택했으며, OpenGL 4.6에서도 SPIR-V 지원이 코어 기능으로 추가되었다.

한편, 구글이 주도하는 ANGLE 프로젝트[193]Direct3D, Vulkan, Metal 등 다른 그래픽스 API를 기반으로 OpenGL ES API를 에뮬레이션하는 라이브러리이다. 이는 원래 브라우저의 WebGL 구현을 위해 시작되었지만[194], 불안정한 네이티브 OpenGL 드라이버를 우회하고 더 안정적인 다른 API(특히 Windows의 Direct3D)를 활용하여 호환성과 성능을 개선하려는 목적으로도 사용되고 있다.[195][196]

7. DirectX와의 관계

OpenGL은 3차원 그래픽스를 전문적으로 다루는 라이브러리인 반면, DirectX는 게임 개발에서의 이용을 주된 목적으로 하며 그래픽스뿐만 아니라 사운드 및 입력 관련 API까지 포함하고 있다는 점에서 차이가 있다. 따라서 OpenGL과 직접 비교할 대상은 DirectX의 구성 요소 중 그래픽스를 담당하는 Direct3D이다.

DirectX는 주로 Windows나 Xbox 플랫폼에서의 게임 개발 등에 많이 사용된다. 반면 OpenGL은 크로스 플랫폼을 지원하여 Windows뿐만 아니라 Linux, macOS 등 다양한 운영체제에서 구현되어 제공된다. Windows 환경에서는 DirectX와 OpenGL을 모두 사용할 수 있다.

OpenGL은 워크스테이션에서 시작되었고 크로스 플랫폼을 지원한다는 특징 때문에, CAD, 산업 디자인, 과학 기술 계산 및 의료 분야에서의 시각화 등 업무 분야에서 널리 사용되어 왔다. 이는 크로스 플랫폼 애플리케이션뿐만 아니라 Windows 전용 애플리케이션에서도 마찬가지였다. 과거에는 이러한 업무용 분야에서 엔터테인먼트 용도가 주였던 Direct3D보다 OpenGL이 선호되는 경향이 있었다. 이러한 배경으로 인해 워크스테이션이나 업무용 GPU 및 비디오 카드 제품 중에는 OpenGL에 최적화된 사양을 갖춘 제품들이 판매되었다. 대표적으로 NVIDIA의 Quadro/RTX 시리즈나 AMD의 FirePro/Radeon Pro 시리즈가 있으며, 이들은 장치 드라이버를 포함한 전체 사양이 OpenGL에 맞춰 최적화되어 있다. 하지만 이런 제품들은 상대적으로 DirectX(Direct3D)에 대한 최적화가 부족하여, DirectX 기반 애플리케이션에서는 성능이 떨어지는 경향을 보이기도 한다. 또한 일부 업무용 소프트웨어는 드라이버의 품질이나 안정성을 이유로 OpenGL/Direct3D 사용 여부와 관계없이 이러한 전문가용 그래픽 하드웨어 제품만을 공식 지원하기도 한다. 예를 들어, Windows 버전의 AutoCAD는 과거 OpenGL을 사용했으나, 버전 2008부터는 Windows Vista 환경에서 Direct3D를 사용하기 시작했고[201], 버전 2022 이후로는 Direct3D 12를 우선적으로 사용하지만[202], 인증된 하드웨어 목록에는 소비자용 제품이 아닌 전문가용 제품만 포함된다[203]

그러나 최근 Vulkan이나 Metal과 같은 새로운 로우 레벨 API가 등장하고 OpenGL의 발전이 정체되면서, 업무용 및 디자인용 소프트웨어에서도 OpenGL 지원을 중단하는 사례가 나타나고 있다. Windows 버전의 Shade3D는 버전 17을 마지막으로 OpenGL 지원을 종료하고 버전 18부터는 Direct3D만 지원하며[204][205], Vectorworks는 버전 2022부터 OpenGL 대신 DirectX/Metal을 사용하기 시작했다[206][207]

GeForce나 Radeon과 같은 일반 소비자용 GPU의 Windows용 드라이버는 주로 Direct3D에 최적화되어 있지만, 그렇다고 해서 소비자용 GPU와 Windows 드라이버 환경에서 OpenGL이 항상 Direct3D보다 느린 것은 아니며, 경우에 따라서는 OpenGL이 더 빠른 성능을 보이기도 한다[149]

GPU 제조사들은 Windows뿐만 아니라 Linux 및 macOS용 OpenGL 지원 드라이버도 제공하고 있다. 다만 macOS의 경우, Windows나 Linux와 달리 제조사가 공식적으로 지원하는 하드웨어가 제한적이다[208][209][210][211][212]

과거 실리콘 그래픽스마이크로소프트는 OpenGL과 Direct3D의 통합을 목표로 1997년 Fahrenheit라는 3D 그래픽스 API 공동 개발을 시작하기도 했으나[213], 이 계획은 1999년 말 사실상 중단되었다. 마이크로소프트는 OpenGL ARB 설립 당시 멤버였으나 2003년에 탈퇴했다. 이후 여러 변화를 거쳐 2014년 OpenGL 4.5 발표와 함께 마이크로소프트가 OpenGL 사양 관리 주체인 Khronos 그룹에 다시 참여하게 되었다[214]

8. macOS에서의 지원 중단

2018년 6월 5일, 애플(Apple Inc.)은 WWDC 2018에서 macOS, iOS, tvOS 등 모든 자사 플랫폼에서 OpenGL 및 OpenCL API를 비권장(deprecated)한다고 발표했다.[30][215] 이는 macOS Mojave부터 적용되었으며, 애플은 개발자들에게 2014년에 도입된 자체 그래픽 API인 Metal을 대신 사용하도록 강력히 권장하고 있다.[30]

이에 따라 macOS에서 네이티브로 지원하는 OpenGL의 마지막 버전은 4.1 버전에 머물러 있다.[215] 애플이 대체재로 권장하는 Metal은 Vulkan과 유사한 로우 레벨 API로, 하드웨어에 더 가깝게 접근할 수 있지만 OpenGL보다 직접적인 애플리케이션 개발보다는 미들웨어 개발에 더 적합한 특성을 가진다.

9. ARM 버전 Windows에서의 이용

마이크로소프트 서피스 Pro X와 같이 ARM 아키텍처 기반 Windows 환경에서는 기본적으로 opengl32.dll 및 glu32.dll 파일이 제공되지만, GPU 제조사가 ARM용 OpenGL 드라이버를 제공하지 않는 경우가 많아 OpenGL 1.2 이후 버전의 기능을 사용하기 어렵다.

이를 해결하기 위해 마이크로소프트는 ARM 버전의 윈도우 10윈도우 11에서 OpenCL, OpenGL, Vulkan 애플리케이션을 실행할 수 있도록 호환 기능 팩(Compatibility Pack)을 제공하고 있다.[216] 이 호환 기능 팩은 DirectX 12 기반으로 만들어진 매핑 레이어이며, Mesa 프로젝트에서 가져온 라이브러리 등을 포함한다.[217][218] 2024년 6월 기준으로 이 호환 기능 팩을 통해 OpenGL 3.3 버전까지의 기능을 사용할 수 있다.

퀄컴의 SoC인 스냅드래곤 X Elite에 내장된 아드레노 GPU의 경우, 향후 매핑 레이어를 통해 OpenGL 4.6 버전까지 지원될 예정이다.[219]

참조

[1] 웹사이트 The Programming Languages Beacon, v10.0 http://www.lextrait.[...] 2010-03-14
[2] 웹사이트 Products: Software: OpenGL: Licensing and Logos SGI 2012-11-07
[3] 웹사이트 SGI – OpenGL Overview http://www.sgi.com/p[...] 2007-02-16
[4] 웹사이트 Who's the Fairest of Them All? http://www.cgw.com/P[...] Computer Graphics World 2012-07
[5] 웹사이트 OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group https://www.khronos.[...] 2006-07-31
[6] 웹사이트 The Future of OpenGL (forum discussion) https://community.kh[...] 2020
[7] 웹사이트 Khronos News Archives https://www.khronos.[...] 2022-11-28
[8] 웹사이트 Khronos Blog https://www.khronos.[...] 2022-11-28
[9] 웹사이트 GLSL_NV_ray_tracing https://github.com/K[...]
[10] 웹사이트 GL_NV_mesh_shader https://github.com/K[...]
[11] 웹사이트 Khronos Membership Overview and FAQ http://www.khronos.o[...] Khronos.org 2012-11-07
[12] 웹사이트 Khronos OpenGL Registry https://khronos.org/[...] Khronos Group 2017-07-31
[13] 웹사이트 NV_half_float https://www.khronos.[...] Khronos Group
[14] 웹사이트 How to Create Khronos API Extensions https://khronos.org/[...] Khronos Group 2017-07-31
[15] 웹사이트 OpenGL - The Industry's Foundation for High Performance Graphics https://www.khronos.[...] 2011-07-19
[16] 웹사이트 A list of GLUT alternatives, maintained by https://www.opengl.o[...] Khronos Group 2013-05-02
[17] 웹사이트 Related toolkits and APIs https://www.opengl.o[...] OpenGL 2014-10-08
[18] 웹사이트 IRIS GL, SGI's property http://www.cg.tuwien[...]
[19] 웹사이트 OpenGL Prehistory: IRIS GL (slide) https://www.slidesha[...]
[20] 웹사이트 Creation of the OpenGL ARB http://www.sgi.com/c[...] 2007-02-16
[21] 웹사이트 End of OpenGL++ https://www.opengl.o[...] Khronos Group
[22] 간행물 Top Game Developers Call on Microsoft to Actively Support OpenGL https://archive.org/[...] Imagine Media 1997-08
[23] 웹사이트 Announcement of Fahrenheit http://www.windowsit[...]
[24] 뉴스 Members of Fahrenheit. 1998. http://www.findartic[...] 1998
[25] 웹사이트 End of Fahrenheit https://www.theregis[...]
[26] 웹사이트 OpenGL ARB to pass control of OpenGL specification to Khronos Group https://www.khronos.[...] Khronos press release 2006-07-31
[27] 웹사이트 OpenGL ARB to Pass Control of OpenGL Specification to Khronos Group http://www.accessmyl[...] AccessMyLibrary Archive
[28] 웹사이트 OpenGL Celebrates Its 30th Birthday https://www.phoronix[...] 2024-12-07
[29] 웹사이트 OpenGL is not dead, long live Vulkan https://accidentalas[...] 2024-12-07
[30] 뉴스 Apple Deprecates OpenGL Across All OSes; Urges Developers to use Metal https://www.anandtec[...] Purch 2018-06-05
[31] 웹사이트 GLQuake https://quake.fandom[...]
[32] 웹사이트 Doom OpenGL VS Vulkan Graphics Performance Analysis https://www.eteknix.[...] 2024-12-07
[33] 웹사이트 Doom Wiki: id Tech 7 https://doomwiki.org[...] 2021-10-26
[34] 웹사이트 Technology Licensing: id Tech 2 http://www.idsoftwar[...] 2008-09-17
[35] 웹사이트 Dota 2 removes OpenGL support, new hero Muerta now live, big update due in April https://www.gamingon[...] 2023-03-26
[36] 웹사이트 Jet Set Vulkan : Reflecting on the move to Vulkan https://developer.sa[...]
[37] 웹사이트 Magma: Overview https://fuchsia.dev/[...] 2023-03-26
[38] 서적 OpenGL programming for the X Window System Addison-Wesley 2001
[39] 뉴스 Moving Beyond OpenGL 1.1 for Windows https://www.gamedev.[...] 2007-11-15
[40] 서적 Simulación visual de materiales : teoría, técnicas, análisis de casos https://books.google[...] Universitat Politècnica de Catalunya 2019-08-21
[41] 웹사이트 Point Primitive https://www.khronos.[...]
[42] 웹사이트 Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0 https://www.khronos.[...] 2010-03-11
[43] 웹사이트 Khronos Drives Evolution of Cross-Platform 3D Graphics with Release of OpenGL 4.1 Specification https://www.khronos.[...] 2010-07-26
[44] 웹사이트 Khronos Releases OpenGL 4.3 Specification with Major Enhancements https://www.khronos.[...] 2012-08-06
[45] 웹사이트 Khronos Releases OpenGL 4.4 Specification https://www.khronos.[...] 2013-07-22
[46] 웹사이트 OpenGL 3 (3DLabs And The Evolution Of OpenGL) http://www.tomshardw[...] Tom's Hardware 2010-10-24
[47] 웹사이트 OpenGL ARB announces an update on OpenGL 3.0 http://www.opengl.or[...] 2007-10-31
[48] 웹사이트 OpenGL 3.0 Released, Developers Furious – Slashdot http://tech.slashdot[...] Tech.slashdot.org 2012-11-07
[49] 웹사이트 OpenGL BOF went over well, no pitch forks seen https://www.opengl.o[...]
[50] 웹사이트 The Industry Standard for High Performance Graphics https://www.opengl.o[...] OpenGL 2017-07-31
[51] 웹사이트 NVIDIA provides early OpenGL 3.0 driver now https://www.opengl.o[...]
[52] 웹사이트 Intel Iris and HD Graphics Driver for Windows 7/8/8.1 64bit https://downloadcent[...]
[53] 웹사이트 Expected maximum texture size - Graphics and GPU Programming http://www.gamedev.n[...]
[54] 웹사이트 Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification http://www.khronos.o[...] 2011-08-08
[55] 웹사이트 Khronos Releases OpenGL 4.3 Specification with Major Enhancements http://www.khronos.o[...] 2012-08-06
[56] 웹사이트 Intel Skylake-S CPUs and 100-series Chipsets Detailed in Apparent Leak http://gadgets.ndtv.[...] 2015-04-17
[57] 웹사이트 Khronos Group Announces Key Advances in OpenGL Ecosystem – Khronos Group Press Release https://www.khronos.[...] The Khronos Group Inc 2015-04-17
[58] 웹사이트 OpenGL 4.5 released—with one of Direct3D's best features https://arstechnica.[...] 2015-04-17
[59] 웹사이트 SG4121: OpenGL Update for NVIDIA GPUs http://www.ustream.t[...] 2015-04-17
[60] 웹사이트 OpenGL 4.5 Update for NVIDIA GPUs http://www.slideshar[...] 2015-04-17
[61] 웹사이트 Khronos Releases OpenGL 4.6 with SPIR-V Support https://www.khronos.[...] The Khronos Group Inc 2017-07-31
[62] 웹사이트 The OpenGL Shading Language, Version 4.60.7 https://www.khronos.[...] 2019-08-21
[63] 웹사이트 NVIDIA Releases 381.26.11 Linux Driver With OpenGL 4.6 Support https://www.phoronix[...] 2017-07-31
[64] 웹사이트 Intel's OpenGL Linux Driver Now Has OpenGL 4.6 Support For Mesa 19.2 https://www.phoronix[...] 2019-08-21
[65] 웹사이트 AMD's RadeonSI Driver Finally Enables OpenGL 4.6 https://www.phoronix[...] 2019-11-27
[66] 웹사이트 AMD Adrenalin 18.4.1 Graphics Driver Released (OpenGL 4.6, Vulkan 1.1.70) – Geeks3D http://www.geeks3d.c[...] 2018-05-10
[67] 웹사이트 Radeon Software Adrenalin Edition 18.4.1 Release Notes https://support.amd.[...] 2018-05-10
[68] 웹사이트 Intel Graphics Driver 25.20.100.6861 Released (OpenGL 4.6 + Vulkan 1.1.103) {{!}} Geeks3D https://www.geeks3d.[...] 2019-05-16
[69] 웹사이트 Windows 10 DCH Drivers https://downloadcent[...] 2019-08-21
[70] 웹사이트 NVIDIA GeForce 397.31 Graphics Driver Released (OpenGL 4.6, Vulkan 1.1, RTX, CUDA 9.2) – Geeks3D http://www.geeks3d.c[...] 2018-05-10
[71] 웹사이트 Apple Developer Documentation https://developer.ap[...]
[72] 웹사이트 macOS 10.15 Catalina: The Ars Technica review https://arstechnica.[...] 2019-10-07
[73] 웹사이트 The end of OpenGL support, plus other updates Apple didn't share at the keynote https://arstechnica.[...] 2020-10-19
[74] 웹사이트 Vulkan, and faster OpenGL ES, on iOS and macOS https://moltengl.com[...] 2020-10-19
[75] 웹사이트 google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android. https://github.com/g[...] 2020-10-14
[76] 웹사이트 Zink https://docs.mesa3d.[...]
[77] 웹사이트 State of Windows on Arm64: a high-level perspective https://chipsandchee[...] 2023-10-23
[78] 웹사이트 Introducing OpenCL and OpenGL on DirectX https://www.collabor[...] 2023-10-23
[79] 웹사이트 Deep dive into OpenGL over DirectX layering https://www.collabor[...] 2023-10-23
[80] 뉴스 Meet Vulkan, the powerful, platform-agnostic gaming tech taking aim at DirectX 12 http://www.pcworld.c[...] 2015-03-03
[81] 뉴스 Khronos unveils Vulkan: OpenGL built for modern systems https://arstechnica.[...] 2015-03-03
[82] 웹사이트 Khronos Announces Next Generation OpenGL Initiative http://www.anandtech[...] AnandTech 2014-08-20
[83] 웹사이트 OpenGL 4.5 released, next-gen OpenGL unveiled: Cross-platform Mantle killer, DX12 competitor https://www.extremet[...] 2014-08-20
[84] 웹사이트 Khronos Publishes Its Slides About OpenGL-Next https://www.phoronix[...] Phoronix 2014-08-22
[85] 문서 OpenGL SC Overview - The Khronos Group Inc https://www.khronos.[...]
[86] 문서 OpenGL Overview https://www.opengl.o[...]
[87] Internet Archive QuadroとGeForceの違い |菱洋エレクトロ株式会社 https://web.archive.[...]
[88] 문서 ホイール欲しい ハンドル欲しい » Intel HD Graphics 4000 GPU と OpenGL http://wlog.flatlib.[...]
[89] 웹사이트 新連載-語りたい3D系ユーザーのためのOpenGL考察1 https://www.cqpub.co[...] 2024-08-24
[90] 웹사이트 Quadroとは?GeForceとの違いや性能比較も https://dosparaplus.[...] 2024-08-25
[91] 웹사이트 ついに登場!ATI完全オリジナルFireGLカード「FireGL 8800」 https://ascii.jp/ele[...] 2024-08-25
[92] 웹사이트 スーパーコンピューターの系譜 ATIから続くAMDのGPGPU戦略 (1/3) https://ascii.jp/ele[...] 2024-08-27
[93] 문서 ValveはなぜSource EngineをLinux+OpenGL環境へ移植したのか。GTC 2013のValveセッションレポート https://www.4gamer.n[...]
[94] 웹사이트 OpenGLとは?OpenGLの基礎をわかりやすく解説!OpenGLのメリットは?導入手順とバージョン確認の方法も確認 https://freelance.sh[...] 株式会社SHIFT 2024-09-01
[95] 문서 第35回 Days of WINE and Struggles again[4] | gihyo.jp https://gihyo.jp/lif[...]
[96] 문서 Linux版SteamにVulkan対応のWine実装でWindowsゲームもプレイ可能に - PC Watch https://pc.watch.imp[...]
[97] 문서 Unreal Engine 5.0 リリース ノート | Unreal Engine 5.0 ドキュメンテーション | Epic Developer Community https://dev.epicgame[...]
[98] 문서 Unreal Engine の Linux の開発要件 | Unreal Engine 5.4 ドキュメンテーション | Epic Developer Community https://dev.epicgame[...]
[99] 문서 グラフィックス API サポート - Unity マニュアル https://docs.unity3d[...]
[100] 문서 Metal - Unity マニュアル https://docs.unity3d[...]
[101] 문서 Qt Platform 6.0 Released | Embedded Systems Development Platform | Qt https://www.qt.io/bl[...]
[102] 문서 Qt6.0をリリースしました | Qt Group 日本オフィス https://www.qt.io/ja[...]
[103] Internet Archive 日本SGI - OpenGL https://web.archive.[...]
[104] 문서 [SIGGRAPH]ついにDirectX 11を凌駕した!? Khronosに聞く「OpenGL 4.2」の正体 - 4Gamer.net https://www.4gamer.n[...]
[105] 문서 OpenGLはDirectX 11を超え,OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート - 4Gamer.net https://www.4gamer.n[...]
[106] 웹사이트 Adaptive Scalable Texture Compression (Preliminary) | Microsoft Docs https://docs.microso[...]
[107] 웹사이트 D3D11_ASTC_PROFILE enumeration (Preliminary) | Microsoft Docs https://docs.microso[...]
[108] 간행물 The OpenGL® Graphics System: A Specification (Version 3.0 - August 11, 2008) https://www.opengl.o[...] Mark Segal, Kurt Akeley; Editor (version 1.1): Chris Frazier; Editor (versions 1.2-3.0): Jon Leech; Editor (version 2.0): Pat Brown 2008-08-11
[109] 웹사이트 Vertex Specification - OpenGL Wiki https://www.opengl.o[...]
[110] 웹사이트 GL_ARB_vertex_attrib_binding | Khronos https://www.khronos.[...]
[111] 웹사이트 ホイール欲しい ハンドル欲しい » OpenGL ES 3.0 / OpenGL 4.3 VertexArrayObject と VertexAttribBinding https://wlog.flatlib[...]
[112] 웹사이트 EGL Overview - The Khronos Group Inc https://www.khronos.[...]
[113] 웹사이트 The freeglut Project :: About http://freeglut.sour[...]
[114] 웹사이트 OpenGL Loading Library - OpenGL Wiki https://www.opengl.o[...]
[115] 웹사이트 SLUDGE Adventure Game Engine - Home http://opensludge.gi[...]
[116] 웹사이트 GLEW: The OpenGL Extension Wrangler Library http://glew.sourcefo[...]
[117] 웹사이트 GLFW - An OpenGL library https://www.glfw.org[...]
[118] 뉴스 GLUS - Modern OpenGL, OpenGL ES and OpenVG Utilities now part of the OpenGL SDK - khronos.org news https://www.khronos.[...]
[119] 웹사이트 OpenGL Mathematics https://glm.g-truc.n[...]
[120] 웹사이트 ValveSoftware/ToGL: Direct3D to OpenGL abstraction layer https://github.com/V[...]
[121] 웹사이트 The Open Toolkit | OpenTK https://opentk.githu[...]
[122] 웹사이트 OpenGL SDK | Libraries https://www.opengl.o[...]
[123] 웹사이트 OpenGL SDK | Tools https://www.opengl.o[...]
[124] 웹사이트 OpenGL | NVIDIA Developer https://developer.nv[...]
[125] 웹사이트 OpenGL Reference - Win32 apps | Microsoft Learn https://learn.micros[...]
[126] 웹사이트 OpenGL - Windows applications | Microsoft Docs https://docs.microso[...]
[127] 간행물 The OpenGL(R) Graphics System: A Specification (Version 1.5) https://www.opengl.o[...]
[128] 웹사이트 T.Teranishi:OpenGL:version https://www.asahi-ne[...]
[129] 뉴스 Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0 - Khronos Group Press Release https://www.khronos.[...]
[130] 뉴스 Game Developers Conference(GDC) 2010現地レポート - GAME Watch https://game.watch.i[...]
[131] 뉴스 Khronos Drives Evolution of Cross-Platform 3D Graphics with Release of OpenGL 4.1 Specification - Khronos Group Press Release https://www.khronos.[...]
[132] 뉴스 Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification - Khronos Group Press Release https://www.khronos.[...]
[133] 뉴스 Khronos Group Announces Key Advances in OpenGL Ecosystem - Khronos Group Press Release https://www.khronos.[...]
[134] 뉴스 「OpenGL 4.3」および「OpenGL ES 3.0」が発表される | SourceForge.JP Magazine http://sourceforge.j[...]
[135] 뉴스 Khronos Releases ASTC Next-Generation Texture Compression Specification - Khronos Group Press Release https://www.khronos.[...]
[136] 뉴스 Khronos Releases OpenGL 4.4 Specification - Khronos Group Press Release https://www.khronos.[...]
[137] 뉴스 Khronos、シェアード・バーチャル・メモリなどをサポートするOpenCL 2.0 ~OpenGL 4.4の仕様も公開 - PC Watch https://pc.watch.imp[...]
[138] 뉴스 OpenGL 4.5が正式リリース - Direct State Accessなどを追加 | マイナビニュース https://news.mynavi.[...]
[139] 뉴스 Khronos Expands Scope of 3D Open Standard Ecosystem - Khronos Group Press Release https://www.khronos.[...]
[140] 뉴스 Khronos Releases OpenGL 4.6 with SPIR-V Support - The Khronos Group Inc https://www.khronos.[...]
[141] 뉴스 OpenGL 3Dの次世代規格の策定作業がKhronos Groupの指揮下に始まる…ハードウェア重視、マルチスレッド、共通シェーディング言語など - TechCrunch http://jp.techcrunch[...]
[142] 뉴스 [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに - 4Gamer.net https://www.4gamer.n[...]
[143] 웹사이트 SPIR - The first open standard intermediate language for parallel compute and graphics https://www.khronos.[...]
[144] 뉴스 [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」でAMDの「Mantle」を採用 - 4Gamer.net https://www.4gamer.n[...]
[145] 뉴스 新世代の低オーバーヘッドなグラフィックスAPI「Vulkan」,ついに正式始動 - 4Gamer.net https://www.4gamer.n[...]
[146] 간행물 Vulkan on NVIDIA GPUs; Piers Daniell, Driver Software Engineer, OpenGL and Vulkan https://on-demand.gp[...]
[147] 웹사이트 Khronos OpenGL® Registry - The Khronos Group Inc https://registry.khr[...]
[148] 뉴스 Carmack: Direct3D is now better than OpenGL | bit-gamer.net http://www.bit-tech.[...]
[149] 뉴스 Valve: OpenGL is faster than DirectX - even on Windows - ExtremeTech https://www.extremet[...]
[150] 블로그 Rich Geldreich's Tech Blog: Things that drive me nuts about OpenGL http://richg42.blogs[...]
[151] 웹사이트 OpenGL/ES,GLSLのバグとKhronosの不備 - リンゴをかじれ https://web.archive.[...]
[152] 블로그 OpenGL Is Broken – The Burning Basis Vector http://www.joshbarcz[...]
[153] 웹사이트 OpenGL FAQ / 17 Using Fonts https://www.opengl.o[...]
[154] 웹사이트 OpenGL Programming/Modern OpenGL Tutorial Text Rendering 01 - Wikibooks, open books for an open world https://en.wikibooks[...]
[155] 블로그 fractious: Rendering Text in OpenGL on Android https://fractiousg.b[...]
[156] 웹사이트 wglUseFontOutlinesW function (wingdi.h) - Win32 apps | Microsoft Learn https://learn.micros[...]
[157] 웹사이트 GL_NV_path_rendering | Khronos Registry - The Khronos Group Inc https://registry.khr[...]
[158] 간행물 GL_NV_path_rendering | NVIDIA https://developer.do[...]
[159] 뉴스 NVIDIA、ついにAdobe Illustrator CCの GPUアクセラレーション対応を発表|NVIDIA https://www.nvidia.c[...]
[160] 웹사이트 NV Path Rendering | NVIDIA Developer https://developer.nv[...]
[161] 웹사이트 DXGI overview - Win32 apps | Microsoft Docs https://docs.microso[...]
[162] 웹사이트 WGL_NV_gpu_affinity | Khronos Registry - The Khronos Group Inc https://registry.khr[...]
[163] 간행물 HD is now 8MP & HDR - NVISION 08 | Ian Williams - Manager, PSG Applied Engineering https://www.nvidia.c[...]
[164] 웹사이트 WGL_AMD_gpu_association | Khronos Registry - The Khronos Group Inc https://registry.khr[...]
[165] 웹사이트 OpenGL Hardware Database by Sascha Willems | Reports supporting WGL_AMD_gpu_association https://opengl.gpuin[...]
[166] 웹사이트 OpenGL Hardware Database by Sascha Willems | Reports supporting WGL_NV_gpu_affinity https://opengl.gpuin[...]
[167] 웹사이트 GLX_AMD_gpu_association | Khronos Registry - The Khronos Group Inc https://registry.khr[...]
[168] 간행물 Programming Guide :: CUDA Toolkit Documentation http://docs.nvidia.c[...]
[169] 웹사이트 How to Configure Discrete Graphics Cards to Run In AMD CrossFire™ Mode (Article Number: DH-018) | AMD https://www.amd.com/[...]
[170] 웹사이트 How to Configure Discrete Graphics Cards to Run in AMD CrossFire™ Mode (Article Number: DH2-018) | AMD https://www.amd.com/[...]
[171] 웹사이트 Frequently Asked Questions AMD OpenCL™ Coding Competition : OpenCL Questions : 26. Does the AMD APP SDK v2.4 with OpenCL 1.1 support work on multiple GPUs (ATI CrossFire)? http://community.top[...]
[172] 뉴스 AMD、Windows 10/DirectX 12への対応は万全とアピール - PC Watch https://pc.watch.imp[...]
[173] 뉴스 DirectX 12の異種混合GPU「EMA」でGeForceとRadeonをハイブリッドすると意外な結果に - GIGAZINE https://gigazine.net[...]
[174] 웹사이트 GPU と OpenGL の機能と制限(Photoshop CS4/CS5) https://helpx.adobe.[...]
[175] 웹사이트 Photoshop CC GPU FAQ https://helpx.adobe.[...]
[176] Github directx-sdk-samples/BasicCompute11.cpp at master · walbourn/directx-sdk-samples https://github.com/w[...]
[177] 웹사이트 wglCreateContext function (wingdi.h) - Win32 apps | Microsoft Docs https://docs.microso[...]
[178] 웹사이트 wglMakeCurrent function (wingdi.h) - Win32 apps | Microsoft Docs https://docs.microso[...]
[179] 웹사이트 Direct3D 11 のマルチスレッドの概要 | Microsoft Docs https://docs.microso[...]
[180] 웹사이트 マルチスレッドによるオブジェクトの作成 | Microsoft Docs https://docs.microso[...]
[181] 웹사이트 wglShareLists function (wingdi.h) - Win32 apps | Microsoft Docs https://docs.microso[...]
[182] 웹사이트 OpenGL and multithreading - OpenGL Wiki https://www.khronos.[...]
[183] 웹사이트 glXCreateContext | Khronos https://www.khronos.[...]
[184] 뉴스 クロノス・グループ、SPIR-V機能を搭載した「OpenGL® 4.6」を発表 - Press Release - Khronos Group https://jp.khronos.o[...]
[185] 뉴스 OpenGL 4.6の進化点やOpenCLの将来について,Khronos Group代表のNeil Trevett氏に聞いてみた - 4Gamer.net https://www.4gamer.n[...]
[186] 웹사이트 WHQL Release Signature - Windows drivers | Microsoft Docs https://docs.microso[...]
[187] 웹사이트 Dolphin Emulator - Dolphin Emulator and OpenGL drivers - Hall of Fame/Shame https://ja.dolphin-e[...]
[188] 블로그 Rich Geldreich's Tech Blog: The Truth on OpenGL Driver Quality http://richg42.blogs[...]
[189] 웹사이트 Reference Compiler https://www.khronos.[...]
[190] 웹사이트 2年間ずっとわからなかったOpenGLのバグ - リンゴをかじれ https://web.archive.[...]
[191] 웹사이트 opengl:glsl [HYPERでんち] http://dench.flatlib[...]
[192] 뉴스 「OpenGL 4.4」および「OpenCL 2.0」が発表される | SourceForge.JP Magazine: http://sourceforge.j[...]
[193] Github google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android. https://github.com/g[...]
[194] 뉴스 Googleが「ANGLE」プロジェクト、Windows向けにWebGL互換レイヤ | マイナビニュース https://news.mynavi.[...]
[195] 웹사이트 Qt 5 on Windows ANGLE and OpenGL/ja - Qt Wiki https://wiki.qt.io/Q[...]
[196] 뉴스 Google Developers Japan: Android Q ベータ版の概要 https://developers-j[...]
[197] 웹사이트 NVIDIA Quadro RTX 5000 Specs | TechPowerUp GPU Database https://www.techpowe[...]
[198] 웹사이트 NVIDIA GeForce RTX 2080 SUPER Specs | TechPowerUp GPU Database https://www.techpowe[...]
[199] 웹사이트 PassMark - Quadro RTX 5000 - Price performance comparison https://www.videocar[...]
[200] 웹사이트 PassMark - GeForce RTX 2080 SUPER - Price performance comparison https://www.videocar[...]
[201] 웹사이트 AutoCAD 2008 の動作環境 https://www.autodesk[...]
[202] 웹사이트 AutoCAD 製品で旧バージョンの DirectX を使用する方法 https://www.autodesk[...]
[203] 웹사이트 AutoCAD | 認定グラフィックス ハードウェア | Autodek サポート https://www.autodesk[...]
[204] 웹사이트 【重要】Windows版Shade3Dシリーズをご利用のお客様へ https://shade3d.jp/n[...]
[205] 웹사이트 動作環境 Ver.18 https://shade3d.jp/o[...]
[206] 웹사이트 Countdown 2022:新機能紹介 vol.3 – Vectorworks Design Blog https://bim.aanda.co[...]
[207] 웹사이트 Vectorworks 2022|製品別動作環境 https://www.aanda.co[...]
[208] 웹사이트 Mac向けGeForce GTX 285 http://www.nvidia.co[...] 2013-03-31
[209] 웹사이트 Quadro K5000 for Mac GPUスペック、特徴、ドライバ、サポート | NVIDIA http://www.nvidia.co[...]
[210] 웹사이트 EVGA | 記事 | EVGA GTX 680 Mac 版グラフィックカード http://jp.evga.com/a[...]
[211] 뉴스 Sapphire、Mac Pro向けのRadeon HD 7950ビデオカード ~Mac OS X向けのEFIとWindows向けのUEFIを切り替え可能 - PC Watch https://pc.watch.imp[...]
[212] 웹사이트 ASCII.jp:パーツ換装でMac Pro(Mid 2012)を徹底パワーアップ! (4/6) https://ascii.jp/ele[...]
[213] 웹사이트 Microsoft、SGIと共同でグラフィックスプラットフォームを開発 https://pc.watch.imp[...] PC Watch 2012-08-30
[214] 웹사이트 Khronos Groupが「OpenGL 4.5」をリリース | SourceForge.JP Magazine http://sourceforge.j[...]
[215] 웹사이트 OpenGL および OpenCL グラフィックスを扱う Mac コンピュータ - Apple サポート https://support.appl[...]
[216] 웹사이트 OpenCL™、OpenGL®、および Vulkan® 互換機能パック - Microsoft Apps https://apps.microso[...]
[217] 뉴스 Microsoft、ARM環境で「OpenCL」「OpenGL」アプリを動作させる互換機能パックを公開 - 窓の杜 https://forest.watch[...]
[218] 웹사이트 Announcing the OpenCL™ and OpenGL® Compatibility Pack for Windows 10 on ARM - DirectX Developer Blog https://devblogs.mic[...]
[219] 웹사이트 クアルコム、「Snapdragon X Elite」搭載PCでほとんどのWindowsゲームが動くと予告 | Gadget Gate https://gadget.phile[...]
[220] 웹인용 The Programming Languages Beacon, v10.0 http://www.lextrait.[...] 2010-03-14
[221] 문서 이것은 BSD, X 및 Mozilla 라이선스에 대해 자세히 모델링 된 자유 소프트웨어 라이선스 B이다.
[222] 웹인용 Products: Software: OpenGL: Licensing and Logos http://www.sgi.com/p[...] SGI 2012-11-07
[223] 웹인용 OpenGL 4.0 Specification https://khronos.org/[...] 2017-07-31
[224] 웹인용 CS 370 → Labs http://faculty.ycp.e[...] faculty.ycp.edu 2019-04-03
[225] 웹인용 IRIS GL, SGI's property http://www.cg.tuwien[...]
[226] 뉴스 Moving Beyond OpenGL 1.1 for Windows https://www.gamedev.[...] 2007-11-15
[227] 웹인용 Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification http://www.khronos.o[...]
[228] 웹인용 Khronos Releases OpenGL 4.3 Specification with Major Enhancements http://www.khronos.o[...]
[229] 웹인용 Khronos Releases OpenGL 4.4 Specification https://www.khronos.[...]
[230] 웹인용 Khronos OpenGL Registry https://khronos.org/[...] Khronos Group 2017-07-31
[231] 웹인용 Khronos Group Announces Key Advances in OpenGL Ecosystem – Khronos Group Press Release https://www.khronos.[...] The Khronos Group Inc 2015-04-17
[232] 웹인용 Khronos Releases OpenGL 4.6 with SPIR-V Support https://www.khronos.[...] The Khronos Group Inc 2017-07-31
[233] 웹사이트 https://www.khronos.[...]
[234] 뉴스 Meet Vulkan, the powerful, platform-agnostic gaming tech taking aim at DirectX 12 http://www.pcworld.c[...] 2015-03-03
[235] 뉴스 Khronos unveils Vulkan: OpenGL built for modern systems https://arstechnica.[...] 2015-03-03
[236] 웹인용 Khronos Announces Next Generation OpenGL Initiative http://www.anandtech[...] AnandTech 2014-08-20
[237] 웹인용 OpenGL 4.5 released, next-gen OpenGL unveiled: Cross-platform Mantle killer, DX12 competitor https://www.extremet[...] 2014-08-20
[238] 웹인용 Khronos Publishes Its Slides About OpenGL-Next https://www.phoronix[...] Phoronix 2014-08-22



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

문의하기 : help@durumis.com