OpenGL에서는 행렬(matrix)에 의해서 변환(transformation)이 표현되고, OpenGL상의 모든 변환은 두 개 또는 그 이상의 행렬에 의해 나타내어진다. 변환에는 관측/투영변환과 행렬에는 관측/투영행렬이 존재한다.
기본변환행렬에 사용되는 함수는 다음과 같은 것들이 있다.
void glMatrixMode(GLenum mode); //C
Sub glMatrixMode(mode As glMatrixModeConstants) 'VB
glMatrixMode()함수는 행렬모드를 설정하는데 모델 뷰(ModelView), 투영(Projection), 텍스쳐(Texture) 행렬 중 하나를 설정한다.
glMatrixMode()함수의 mode인자 | |
mode 상수값(C에서의 상수) |
의미 |
Modelview |
3D공간에 물체의 배치를 수학적으로 표현한 행렬 |
Projection |
3D공간에 카메라 설정을 수학적으로 표현한 행렬 |
Texture |
물체에 적용하고자 하는 2차원 텍스처에 변형을 가하는 방법을 수학적으로 표현한 행렬 |
이때 중요한 점은 행렬모드를 특정모드로 설정한 다음, 다음에 지정할 변환(투영설정 또는 이동/회전/크기조절)이 효과를 나타낼 수 있도록 현재의 행렬을 초기화하는 glLoadIdentity()함수를 사용해야 한다는 점과 투영모드로 설정한 다음 다시 모델뷰모드로 설정해야 화면에 그림을 그릴 수 있다는 점이다.
glMatrixMode mmProjection '투영모드를 설정한다.
glLoadIdentity '단위행렬을 곱한다. 즉, 행렬을 초기화한다.
glFrustum -1.0, 1.0, -1.0, 1.0, 1.5, 20.0 '원근투영을 설정한다.
glMatrixMode mmModelView '다시 모델뷰 모드를 설정한다.
glLoadIdentity() 함수는 다음과 같이 선언되어 있다.
void glLoadIdentity(void); //C
Sub glLoadIdentity() 'VB
현재의 행렬을 4x4단위행렬로 설정하는 함수는 다음과 같다.
void glLoadMatrix{f,d} (const 유형 *m); //C
void glLoadMatrix{f,d} (m As 유형) 'VB
다음 함수는 현재 행렬의 16개 값을 m에 대입한다.
void glMultMatrix{f,d} (유형 *m); //C
sub glMultMatrix{f,d} (m As 유형) 'VB
'프로그래머의 길 > OpenGL' 카테고리의 다른 글
glOrtho() 함수 (0) | 2009.07.07 |
---|