3차원 공간에서 물체의 위치에 대해서 정의할 때, 기준점을 (0,0,0) 으로 잡고 여기서 물체의 중심 혹은 중심좌표가 되는 극점의 위치를 나타낸다. 이를 월드 좌표 라고 말하며 이 극점을 중심으로 오브젝트가 그려지는게 얼마나 떨어져있는지 나타낸 게 로컬 좌표 라고 한다.
이렇게 가상 공간에 배치 된 물체들을 카메라를 통해 화면에 나타내기 위해 수학적으로 매우 많은 과정을 거친다. 이러한 과정을 렌더링 파이프라인이라고 하며, 이를 통해 3차원 환경을 화면에 자연스럽게 나타낼 수 있다.

OpenGL의 렌더링 파이프라인
로컬 좌표에서 각 오브젝트의 각 vertex 값들과 이를 연결하는 index 값들을 통해 모델을 표현한다. 이때, 단순히 점들을 전부 이어주는게 아니라, 삼각형 형태로 이어주게 된다. 삼각형으로만 이루어지는 이유로는 면을 이루는 가장 첫번째 도형이면서, 삼각형을 통해 빈틈없는 표현이 가능하다. 그리고 아핀변환, 투영 등 여러가지 과정을 거치더라도 삼각형의 형태를 유지할 수 있다. 또한 노말벡터의 연산이 가장 안정적인 도형이 삼각형이다.
그래서 렌더링을 담당하는 그래픽카드같은 장치들은 삼각형을 빠르게 그릴 수 있는 알고리즘이 내장되어있다. 그래서 오브젝트를 이루는 삼각형을 얼마나 빨리 그리느냐에 따라 성능차이가 나타난다.
이제 3차원에 배치된 물체를 카메라를 통해 화면을 나타내야한다. 이때, 카메라의 시야에 닿지 않는 정보를 처리해주어야한다. 2차원이면 물체의 모습이 모두 나타나지만 3차원은 한쪽 면에서 비추면 다른 쪽 면이 보이지않는 부분이 반드시 존재한다.
이것을 처리하지 않고 그냥 그려내면 극점의 연결이 모두 투영되어 알아보기 매우 힘들게 된다. 그래서 이를 처리하는 것을 백스페이스 컬링이라고 하며 이를 통해 화면에 나타낼 극점과 점들이 이루는 면에 대한 부분만 잡아낸다.
이제 물체들을 어떻게 화면에 나타낼지 정리되면 카메라에 잡히지 않는 물체들에 대한 정리를 해야한다. 이를 클리핑이라고 하며 카메라가 비추는 최대 면과 카메라가 이루는 사면체에서
일정거리만큼의 사면체를 잘라낸 절두체의 영역에 들어온 물체들에 대해서 화면에 나타나도록 처리한다.


이후에는 클리핑처리가 된 부분에 대해 절두체의 머리 부분에 투영하는 과정을 거치며
뷰포트에 보여지면서 레스터라이즈라는 과정을 통해 극점들로 이루진 면에 나타낼 색깔들을 픽셀화로 나타내주는 작업을 한다. 이 작업 역시 픽셀들에 대한 매우 많은 반복작업을 진행해야하기에 GPU에서 작업을 진행하며 성능에 따라 차이가 발생한다.
위 과정들 외에도 세세한 과정을 거쳐 화면에 출력할 수 있게 해주는 프로그램들의 구성을 파이프라인같다고 하여 파이프라인 이라고 한다.
참고 자료 :
https://m.blog.naver.com/jsjhahi/206651669
https://dlgnlfus.tistory.com/135