본문 바로가기

IT 기술

OpenGL 용어 및 함수 이것저것..(2)

반응형
. 지엘 함수의 실행모드
 

- 직접 모드(Immediate Mode) : 물체를 화면에 그림과 동시에 물체 생성과 관련된 정보를 파기해 버립니다. 따라서 그 물체를 다시 그리려면 모든 코드를 처음부터 다시 실행해야 합니다. 이 경우 복잡한 장면 중 일부 물체만 변경하기를 원할 때에도 나머지 모든 물체에 대해서도 다시 코드를 실행해야 하는데 따른 시간적 부담을 요하게 됩니다.

- 보류 모드(Retained Mode) : 정의된 물체 정보를 그대로 유지하고 재사용합니다. 즉, 물체를 다시 그려낼 때 코드를 실행하지 않고 이미 정의된 물체를 컴파일 된 형태로 재사용함으로써 빠른 속도를 보장하게 됩니다. 이러한 보류 모드는 Display List에 의해 이루어집니다.

. GL의 모든 변환은 변환행렬(Transformation Matrix)로 대변됩니다. 예를 들어 모델변환은 모델행렬로, 시점변환은 뷰행렬로, 투상변환은 투상행렬로 대변됩니다. 따라서 물체에 변환을 가한다는 것은 물체 좌표에 해당 행렬을 곱하는 것에 해당합니다. 예를 들어 모델행렬을 모델좌표에 곱하면 전역좌표로 바뀝니다. 또, 뷰행렬을 전역좌표에 곱하면 시점좌표로 바뀌는 것입니다.

. void glLoadMatrixf(const GLfloat *M)
위 함수는 배열 M에 있는 행렬 요소 값을 현 변환행렬로 올리는 함수입니다.

. void glMultMatrixf(const GLfloat *M)
위 함수는 현 변환행렬에 배열 M에 있는 행렬을 곱하는 함수입니다.

. void glTranslatef(GLfloat dx, GLfloat dy, GLfloat dz)
모델 좌표계를 전역 좌표계로부터 x,y,z 축 방향으로 dx,dy,dz만큼 이동시키는 함수입니다.

. void glScalef(GLfloat sx, GLfloat sy, GLfloat sz)
모델 좌표계 x,y,z 축의 눈금이 전역 좌표계 눈금의 sx,sy,sz배만큼 되도록 크기를 조절하는 함수입니다.

. void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
모델 좌표계를 전역 좌표계로부터 변수 angle에 제시된 각도만큼 반 시계방향으로 회전시킵니다. 이 경우 회전축은 전역 좌표계 원점에서 점(x,y,z)을 향한 벡터입니다. 예를 들어 (1,0,0)이면 x축 기준의 회전이며 (1,1,0)이면 y=x축 기준의 회전입니다.

. 모델변환
설계된 물체 또는 그래픽 라이브러리에서 가져온 물체 그대로 장면을 구성하는데 사용할 수도 있지만 일반적으로는 장면에 맞도록 변환된 모습이 필요합니다. 설계된 물체를 적절히 변환하는 작업을 모델변환이라고 합니다.

. 시점변환
모델변환된 물체를 관찰하기 위해 카메라를 이동하고 회전함으로써 카메라 위치와 방향을 설정하는 작업입니다. 뷰변환이라고도 합니다.

. 투상변환
카메라의 렌즈를 선택하고 촬영하여 물체의 2차원 영상을 필름에 맺히게 하는 작업입니다.

. 뷰포트변환
투상변환으로 찍혀진 사진의 크기를 줄이거나 늘리는 작업입니다.

. 모델뷰변환
GL에서는 모델변환과 뷰변환을 합쳐서 모델뷰변환이라고 합니다.

. 물체를 변화시킬때는 좌표계자체를 변화시키는 방법과 물체를 변화시키는 방법이 있습니다. 좌표계를 변화시키려면 함수 호출순서가 좌표계가 변하는 순서 그대로 나열해야 하지만 물체 변환방법을 사용한다면 함수 호출은 물체가 변하는 순서를 거꾸로 나열해야 합니다.

. void glPushMatirx(), void glPopMatirx()
GL에서는 행렬 스택을 제공하여 현 변환행렬을 스택에 저장할 수 있습니다. 따라서 이러한 기능을 이용하여 이전 변환상태로 복원하고 싶다면 Pop하고 지금 행렬을 저장하고 싶다면 Push하면서 활용하면 되겠죠. 쉽게 말해서 copy나 paste undo redo 기능같은데 활용할 수 있다는 말입니다.
반응형

'IT 기술' 카테고리의 다른 글

Multibyte기반 프로그램을 Unicode기반으로 변경할 때  (0) 2012.01.25
문자 표현 방법  (0) 2012.01.25
OpenGL 용어 및 함수 이것저것..(1)  (0) 2012.01.25
OpenGL(기초)  (0) 2012.01.25
하프 토우닝과 디더링  (0) 2012.01.25