컴퓨터 그래픽스/OpenGL

[컴퓨터그래픽스][OpenGL] 좌표계 설정 coordinate setting

092 2019. 4. 8. 22:33

출처 : https://m.blog.naver.com/pkk1113/220368225985

 

OpenGL에는 4개의 공간이 있다.

그중에 하나인

투상 공간

OpenGL의 3D 공간 속에서 어디부터 어디까지만 보이게 하느냐

영역을 정해서, 그 영역 밖으로 나가는 사물들은 잘려 보인다.

그래서 절단 좌표라고도 한다.

 

glMatrixMode(GL_PROJECTION)

투상 좌표계(GL_PROJECTION)의 공간을 앞으로 계산하겠다는 뜻

투상을 표현하기 전에 선언

 

glMatrixMode(GL_MODELVIEW)

모델 좌표계와 시점 좌표계(GL_MODELVIEW) 의 공간을 앞으로 계산하겠다는 뜻

사물, 시점을 표현하기 전에 선언

 

glLoadIdentity()

좌표계를 초기화

 

glMatrixMode(GL_PROJECTION); // matrixmode? 모든 이벤트의 값을 컴퓨터는 행렬 스택으로 갖고 있음; 좌표계를 투영 표현 모드로 설정

glLoadIdentity();  // 행렬 초기화(단위 행렬로)

 

gluOrtho2D(0.0, 50.0, 0.0, 50.0); // 뷰 볼륨 설정(카메라에서 가장 먼 거리와 가장 가까운 거리 설정)
// gluOrtho2D 함수는 glOrtho의 near와 far를 각각 -1,1로 설정한 것이다. 
// 2차원 정점 명령들은 모든 정점들을 z=0 평면에 둔다. 어플리케이션이 2차원이면 gluOrtho2D 함수 사용.

 

glMatrixMode(GL_MODELVIEW); // 좌표계를 사물, 시점 표현 모드로 설정

 

① glOrtho

정투상으로 시점을 기준으로 좌, 우, 상, 하, 전, 후 어디까지 보이게 하나 정합니다.

 

※ near : z 축으로 시점으로부터 가까운 거리

※ fat : z 축으로 시점으로부터 먼 거리

 

※ 즉, near 쪽에서 far 쪽으로 바라본다고 생각하면 됩니다.

※ far - near 값이 보이는 z 축 공간이라고 생각하면 된다.

 

OpenGL의 기본 투상은 glOrtho(-1, 1, -1, 1, -1, 1)입니다.

 

투상 좌표를 정의하기 위해서는 우선적으로 시점 좌표가 정해져야 합니다. (시점 기준으로 near, far과 쓰이기 때문에...)

 

그래서 glMatrixMode(GL_PROJECTION); 이걸 먼저 코딩하고

그다음 glMatrixMode(GL_MODELVIEW);를 코딩하는 것입니다.