앞서 API에 대해 숙지한 것은 OpenGL에 대해 공부하기 위함입니다.
OpenGL은 API의 specification입니다, API들의 스펙을 정의하는 것입니다.
"OpenGL은 단지 function의 이름과 그 하는 일만을 정의한 specification입니다." 이렇게 설명하는게 좋을 것 같네요.
OpenGL은 그래픽과 이미지를 다루는 많은 function들을 제공하고 있습니다.
OpenGL은 Apple, Google, Inter, NVIDIA, Samsung 등에서 표준을 개발하고 유지되고 있습니다.
OpenGL에서 function은 단지 이름과 하는 일만을 정의해주기 때문에 이를 구현하는 것은 개발자의 몫입니다.
OpenGL을 프로그래밍 하는 mode는 크게 immediate-mode와 Core-profile로 나뉩니다.
immediate-mode는 초보자들에게 적합한 매우 쉬운 프로그래밍 방법을 제공하지만, 개발자들의 자유도를 많이 제한 하는 반면 Core-profile은 shader 기반의 기술을 사용하여 자신만의 렌더링 방식을 손수 프로그래밍 할 수 있습니다. Core-profile은 오래된 immediate-mode와 대비하여 modern OpenGL이라 불린다.
OpenGL에 정의되어 있지 않은 이러한 기능들을 보완하기 위해 개발자들은 다양한 종류의 부가 라이브러리들을 개발하였습니다.
GLFW, GLUT, SDL은 화면상에 무언가 그리려면 window가 필요한데, OpenGL은 window를 생성하는 함수를 제공하지 않고 있기 때문에 위 라이브러리가 필요합니다. GLFW는 OpenGL 프로그램의 Window creation해주고, input control을 OpenGL 프로그램에 전달해 줍니다.
또 다른 라이브러리로 GLEW(OpenGL Extension Wrangler)가 있는데 이는 modern OpenGL extension으로 연결을 담당하는 라이브러리입니다. 이는 시스템마다 사용하는 그래픽이 다르고, 그에 따라 extension을 불러오는 방법이 다른 복잡한 과정을 간단히 해결해주는 라이브러리입니다.
(GLFW는 FreeGLUT보다는 안정적이고, SDL보다는 매우 가벼워서 많이 쓰이고 있습니다. 실제로 GLEW + GLFW은 modern OpenGL 프로그램 개발에 가장 널리 쓰이고 있는 조합)
Reference
'Graphics' 카테고리의 다른 글
OpenGL - Viewing & Camera -2 (0) | 2022.04.07 |
---|---|
Viewing & Camera -1 이론 (0) | 2022.04.06 |
Transformation in homogeneous coordinates (0) | 2022.04.02 |
Homogeneous Coordinates (동차좌표) (0) | 2022.04.01 |
API ? (0) | 2022.02.28 |
댓글