시작하는데에 필요한 것
OpenGL
- OpenGL을 한다~~ == Image / Graphics manipulation을 할 수 있게 해주는 API를 쓸 줄 안다
- 하지만 OpenGL 자체가 API는 아니다
- OpenGL은 Khronos Group이란 단체에서 명시하는 어떤 graphics 작업이 어떻게 작동해야하고 어떤 결과물을 기대해야하는지에 대한 specification이고
- API 자체는 GPU 회사들에서 제작한다.
- 즉 GPU마다 내부적으로 돌아가는 알고리즘이 다를 수 있다. 물론 기대하는 결과물은 똑같음.
Modern OpenGL
- 이전의 OpenGL은 immediate mode (또는 fixed function mode)라는 방식으로 쉽게 graphics 작업을 할 수 있었다. Immediate mode는 graphics 기능을 사용하는데에 복잡함을 줄이기 위해 대부분의 함수 기능을 숨겼다. 덕분에 사용자들은 쉽게 graphics 작업을 할 수 있었지만, 기능의 내용이 숨겨져있다보니 각각의 기능을 제대로 이해하지 못하고 사용하거나, 추가적인 기능을 사용하고 싶을 때 사용할 수 없다는 단점이 있었다. 또, 각각의 기능의 내부적인 동작방식을 이해하지 못하다보니 사용 시 특정 부분에서 굉장히 비효율적인 기능을 구현하게되는 단점도 있었다.
- OprnGL v3.3부터는 immediate mode의 사용을 중단하고, 대신 Core-profile이라는 모드를 새로 출시하였다. Core-profile은 immediate mode와는 반대로 굉장히 효율적이고 원하는대로 기능을 사용할 수 있게 되었지만, 대신 그만큼 공부해야하는 양이 많아진다는 단점이 생겼다. Immediate mode가 '쉬운 사용'에 초점을 두면서 많은 graphics 작업에 대한 설명을 생략하였지만, core-profile은 실제로 graphics 작업이 어떻게 작동하는지에 대해 유저에게 제대로 설명한다. 이러한 방식을 통해서 사용자는 graphics 작업이 어떻게 동작하는지 제대로 이해하고 원하는 기능을 구현할 수 있게 되었다. 혼란을 피하기 위해서 Core-profile 모드를 사용하게 되면 immediate mode의 함수는 모두 비활성화된다.
- 대부분의 온라인 튜토리얼들을 보면 v3.3 을 기준으로 작성되어있다. 이는, Core-profile이 v3.3부터 출시되었고, 그 후의 버전들은 모두 v3.3에 추가적인 기능을 얹은 형태로 되어있으며 OpenGL을 처음 배우는 초심자로써 필요한 모든 기능은 v3.3에 포함되어있기 때문이다.
OpenGL Extension