OpenGL

페미위키

1 개요

OpenGL은 표준 3D 렌더링 API이다. Khronos Group의 OpenGL 컨소시움에서 표준을 재정하고 있으며, 최신 버전은 4.5이다[1].

거의 대부분의 운영체제에서 OpenGL을 지원하고 있으며, 일부 운영체제를 제외하면 하드웨어 가속 기능도 지원하고 있다.

API 자체가 C 언어에 맞춰져 있으며, C 언어로 프로그램을 빌드할 수 있는 GUI 플랫폼은 거진 다 지원한다고 보면 된다.

2 특징

OpenGL이 경쟁 API인 Direct3D와 차별화되는 특징은 구버전 API와의 하위 호환성이 어느 정도 보장된다는 점이다. 예를 들어, glDrawArrays 함수는 OpenGL 1.1 버전부터 4.5 버전까지 두루 사용되는 함수이다. Direct3D가 주 버전 변경마다 API를 갈아 엎는 것과는 비교되는 점이다.

또한 Direct3D가 하드웨어에 신경을 써서 고성능을 낼 수 있도록 API를 설계하는 반면 OpenGL은 사용자층을 고려해 수학적인 표기법 등을 신경쓰는 편이다[2].

또한 사용처에 따라 API의 구분이 되고 있다.

3 API군

3.1 OpenGL

OpenGL의 풀 API는 데스크톱 환경에 맞춰진 표준이다. 최신 버전은 OpenGL 4.5이다.

3.2 OpenGL ES

OpenGL ES는 모바일 및 임베디드 환경을 위해 일부 기능을 배제한 표준이다. 최신 버전은 OpenGL ES 3.2이다.

3.3 WebGL

WebGL은 웹 브라우저에서 구동이 가능한 표준이다. 최신 버전은 1.0이며, OpenGL ES 2.0의 표준을 그대로 옮겨왔다.

4 GLSL

Direct3D의 쉐이더 언어인 HLSL과 달리 OpenGL의 쉐이더 언어인 GLSL(OpenGL Shading Language)은 OpenGL에 내장된 요소이다. GLSL은 OpenGL 2.0 및 OpenGL ES 2.0부터 지원한다. GLSL도 사용처에 따라 구성이 약간 달라 OpenGL에서 사용하는 GLSL은 그대로 부르지만 OpenGL ES와 WebGL에서 사용하는 GLSL은 GLSL ES라고 부르는 편이다.

HLSL은 Microsoft의 표준 컴파일러 프로그램에서 컴파일을 해주기 때문에 어디서 컴파일을 해도 내용이 같지만 GLSL은 OpenGL 드라이버를 구현한 곳에 따라 컴파일 결과가 달라지기 때문에 가끔 그래픽카드 제품마다 동작이 달라지는 경우도 존재한다.

5 Direct3D와의 경쟁

예전에는 Microsoft도 OpenGL 컨소시움에 소속된 회사였어서 Windows에서 OpenGL을 1.1버전까지 정식 지원했다. 현재도 OpenGL 드라이버가 설치되지 않은 상태에서 OpenGL 1.1까지 사용할 수 있다.

현재 Microsoft의 제품 중 Xbox 제품군, Windows RT(Windows 8(.1) Store App, Windows Phone 8(.1) UWP)에서는 OpenGL을 아예 사용할 수 없다. 다만, Google에서 개발한 ANGLE을 사용하면 OpenGL ES가 지원되지 않는 Microsoft 플랫폼에서도 OpenGL ES를 사용할 수 있다.

그나마 지원하고 있는 Windows의 경우에는 그래픽카드 드라이버에서 OpenGL 드라이버를 제공하지 않으면 최대 사용 가능한 OpenGL 프로파일이 1.1까지밖에 되지 않는다.

이렇게 Microsoft 제품군에서 지원이 부족한 이유는 경쟁 API인 Direct3D 때문이라는 의견이 많다.

Direct3D 7부터는 OpenGL의 성능을 제치게 되었는데, 이후 OpenGL API의 변경점은 Direct3D의 것을 따라가는 경우가 많다.

현재도 성능 자체는 Direct3D를 제대로 따라가지 못하고 있다. Direct3D 9, 10의 경우에는 최적화를 잘 한 OpenGL 프로그램과 성능이 비슷하지만 Direct3D 11의 경우 해당 버전에 추가된 멀티스레드 렌더링을 OpenGL은 4.5 버전에 이르기까지도 지원을 못 하고 있는 실정이라 속도 면에서 부족한 점이 있다. 실제로 이런 이유로 오버워치는 OpenGL을 이용한 개발을 포기하여 macOS용 클라이언트도 꾸준히 개발해왔던 블리자드 엔터테인먼트 게임 중 이례적으로 macOS로는 게임을 출시하지 않았다[3].

6 같이 보기

7 출처

  1. https://www.opengl.org/documentation/current_version
  2. https://www.youtube.com/watch?v=qu7klX_5FT8
  3. https://us.battle.net/forums/en/overwatch/topic/20744604284#post-10