OpenGL

OpenGL
Opengl-logo.svg
원작자 실리콘 그래픽스
개발자 크로노스 그룹 (구 ARB)
발표일 1992년 1월
프로그래밍 언어 C
종류 3D 그래픽 API
웹 사이트 opengl.org

OpenGL은 크로스 플랫폼 그래픽 라이브러리이며 현재 크로노스 그룹에서 표준을 제정하고 있다. 경쟁 상대로 마이크로소프트DirectX가 있었고, 한때는 크게 뒤쳐졌지만, 현재는 다시 주류로 올라오면서 오히려 DirectX가 OpenGL을 따라가는 형태가 되었다. 최신 버전은 4.5이다.

명칭에 Open이 들어가서 오픈소스로 종종 착각되곤 하지만, OpenGL의 Open은 그래픽 라이브러리를 쓸 수 있게 열어뒀다는 의미에 가깝다. 예전에는 AMD(구 ATI) 그래픽 카드보다는 NVIDIA 그래픽카드가 OpenGL을 훨씬 잘 지원해주었으나, 지금은 거의 도긴개긴인 상태이다.

1 장점[편집]

다양한 운영체제에서 지원하므로, 그래픽 렌더링 코드를 변경없이 사용할 수 있다는 장점이 있고. 기본적으로 C 언어 함수로 되어 있기 때문에 다양한 언어에서 OpenGL를 사용할 수 있다.

2 단점[편집]

오직 그래픽에 필요한 부분만 지원함으로서 그래픽 사용자 인터페이스(GUI)의 창에 대한 지원 같은 것은 따로 배워야 한다는 단점이 있으며,[1] OpenGL 표준이라도 세부적인 API에 대한 구현 여부는 그래픽 카드 회사 재량이므로 각 회사의 그래픽 카드마다 지원하는 API와 렌더링이 달라질 수 있다. 골때린다 특히 AMD의 그래픽 카드에서 렌더링 오류가 많았다. 인텔 그래픽스가 아무리 성능이 좋아져도 똑바로 표시되지 않는 건 API 미지원 사항이나 구현 오류가 많기 때문.

3 버전[편집]

3.1 메이저 버전 1[편집]

1.0
1992년도에 나왔으며 OpenGL의 첫 버전이다.
1.1
1995년에 나왔다.
1.2
1998년에 나왔다.
1.3
2001년에 나왔다.
1.4
2002년에 나왔다. 당시 이 버전을 지원하던 그래픽 카드는 다이렉트X 8.0와 다이렉트X 8.1을 지원하였다.
1.5
2003년에 나왔다. 당시 이 버전을 지원하던 그래픽 카드는 다이렉트X 9을 지원하였다.

3.2 메이저 버전 2[편집]

2.0
2004년에 나왔다. 버전 1대에 비해 셰이더 쪽에서 많은 변화가 일어났다. 특히 1대에서는 소스 언어에서 직접 GL의 함수를 통해 폴리곤을 그리고 제어했으나, 2.0부터 GLSL(GL 쉐이더 언어, C-like)를 지원하기 시작했다. 대응되는 GLSL 버전은 110(1.10). GLSL을 사용함으로 인해 이전 버전과 이후 버전을 가르는 큰 계기가 되고 있다.
2.1
2006년에 나왔다. GLSL 버전 120(1.20).

3.3 메이저 버전 3[편집]

3.0
2008년에 나왔다. 버텍스와 프래그먼트 직접 제어 등이 사라지는 등 많은 변화를 겪었다. GLSL 버전 130(1.30).
3.1
2009년 3월에 나왔다. GLSL 버전 140(1.40).
3.2
2009년 8월에 나왔다. GLSL 버전 150(1.50).
3.3
2010년 3월에 나왔다. Direct3D 10과 호환이 되도록 나왔다. GLSL 버전은 이때부터 버전 번호에 맞춰가기 시작했으며, 지원 기능과 여러 가지 면에서 3.3보다 전의 OpenGL을 고전적(Classic) OpenGL, 이후의 OpenGL을 현대적(Modern) OpenGL이라고 하는 경향이 있다.

3.4 메이저 버전 4[편집]

4.0
2010년 3월에 나왔다. Direct3D 11과 호환이 되도록 나왔다. 3.3과 거의 동시에 발매된 건 하드웨어 성능적인 면이 좀 있다.
4.1
2010년 6월에 나왔다. ES 2.0과 호환되는 라이브러리를 지원한다.
4.2
2011년에 나왔다.
4.3
2012년에 나왔다.
4.4
2013년에 나왔다.
4.5
2014년에 나왔다.
4.6
2017년에 나왔다.

4 파생[편집]

4.1 OpenGL ES[편집]

OpenGL에서 대체할 수 있는 기능은 제거하여 모바일 환경에서 구동할 수 있게 단순화한 버전이다.

4.2 WebGL[편집]

OpenGL 2.0을 기초로 만들어진 표준으로서, 웹사이트 안에서 3D을 그릴 수 있게 해준다.

5 각주

  1. 물론 대개 GL 단독으로 쓰지는 않고 GUI 라이브러리를 쓰는 경우가 많은데, 윈도우 환경이라면 GLUT 등이 많이 사용되며, 크로스 플랫폼 환경을 위한 GLFW 등 몇몇 라이브러리들이 관련 인터페이스 기능들을 제공한다.