* 역사
OpenGL(오픈 그래픽스 라이브러리)는 1992년 Silicon Graphics에서 만든 2차원 및 3차원 그래픽스 표준 API 규격입니다.
OpenGL과 양립하고 있는 그래픽스 라이브러리로 Microsoft의 DirectX( 현재 Direct3D )가 있습니다.
DirectX는 1995년 Microsoft에서 만든 그래픽스 라이브러리로, Windows 개발과 함께 성장해왔고, Windows 멀티미디어 분야에서 두각을 나타내고 있습니다. 이와는 달리 OpenGL은 Windows, Linux 계열 등 멀티플랫폼에서 지원하고 있으며, 현재는 비영리 기술 컨소시엄인 크로노스 그룹에 의해 관리되고 있습니다.
요약하면 현재 그래픽스 라이브러리 중 OpenGL는 표준, DirectX는 많이 쓰이는 것 정도로 설명할 수 있을 것 같습니다.
(OpenGL 과 DirectX의 차이점에 대해서는 다른 포스트에서 설명하도록 하겠습니다.)
* 크로노스 그룹 (Khronos Group)
2000년에 설립된 비영리 기술 컨소시엄으로, 오픈 소스 표준 API의 제작을 통해 미디어 분야에서 가속화된 재생 및 저작이 가능하도록 만드는 것을 목적으로 하는 그룹입니다. 2018년 12월 현재, 크로노스 그룹에 가입되어 있는 단체는 구글, 애플, Nvidia, 삼성, 페이스북, 블리자드, LG, 화웨이 등(너무 많아요…)이 있으며, 기술의 표준을 제정함으로써, 통일성 있는 발전을 기대할 수 있습니다.
(참고 : https://www.khronos.org/members/list)
* OpenGL을 시작하기 전에
사실 그래픽스 라이브러리를 배운다는 것은 많은 3D 지식들이 필요합니다. 그 중 가장 문제가 걸리는 것은 수학이겠지만, 우리가 기본 교육과정에서 배운 내용들이 실생활에 어떻게 연결되는지 알 수 있기에 수능을 위해 배웠던 많은 지식들이 실생활에 혹은 현재의 과학에 어떻게 적용이 되고 있는지 알아갈 수 있을 것입니다.
기본이 되는 수학 지식으로는 선형대수(Linear Algebra), 벡터(Vector)와 행렬(Matrix) 등이 있습니다. 필요에 따라서 개념에 대해서 짚고 넘어가는 부분이 있을 것이며, 영문을 같이 표기하는 이유는 국문으로 번역되면서 많은 동음이의어나 표현이 애매한 언어들이 있기 때문입니다.
간단한 소개를 먼저하자면, 선형대수(Linear Algebra)란 n차원의 선형적인(쉬운말로 직선적인) 공간에서의 수학
정도로 이해를 할 수 있을 것 같습니다. 3차원에 살고 있는 우리에게 대입을 하면, 직선 x, y, z 축으로 이루어진 공간에서의 수학이라고 표현할 수 있을 것 같습니다. 이 공간에서의 거의 모든 것은 벡터(Vector)와 행렬(Matrix)로 표현을 할 수 있습니다. 벡터(Vector)는 크기과 방향을 나타내는 수학적 표현이며, 행렬(Matrix)은 행(Column)과 열(Row)가 각각 4인 4x4 행렬을 통해 이동(Translation), 회전(Rotation), 크기변화(Scale) 을 나타낼 수 있습니다. 참고로 2차원에서의 이동, 회전, 크기변화는 3x3 행렬을 통해 표현이 가능합니다.
OpenGL 강의에 앞서 주의할 점은 OpenGL은 시중에 나와있는 게임 엔진 Unity나 Unreal보다 더 디테일한 부분을 다룹니다. (그래야 문제의 원인도 알고 해결방법도 찾기 때문에) 상식선에서 설명하려는 부단한 노력을 해서, 재미로 들을 수도 있고 3D 그래픽스 개발 문제의 해결 방법을 찾을 강의가 되도록 노력해보겠습니다.
(선형대수와 벡터, 행렬에 대해서는 다른 포스트에서 자세히 설명하도록 하겠습니다.)