3D를 맨처음 공부하기 전에 꼭 한번 해주면 좋은 실습이 하나 있다. 그것이 바로 랜더링 파이프라인을 API로 직접 구현해 보는 것!!
void LocalSpace(); //물체를 생성
void WorldSpace(); //생성한 물체를 세계에 적용
void ViewSpace(); //세계를 카메라(자신의 시선)에 맞게 재배치
void Culling(); //그려질 것만 추려내고(벽 뒤에 있는 물체나 벽의 뒷면은 그려줄 필요가 없다.)
void Lighting(); //광원효과(빛)을 주고
void Projection(); //원근감을 주기 위해(z축(깊이감)을 적용하는 과정)
void ViewPort(); //보여줄 창의 크기를 잡아주고
void 래터라이즈();
//3D 이미지를 2D로(적용된 z축(깊이)을 x와 y에 적용한다. - 모니터는 x축과 y축밖에 없다.)
void Rendering(); //그림을 그려준다.
일단 이렇게 함수명만 먼저 선언해두고...
행렬클래스(4X4행렬)를 제작하고,
(행렬끼리의 덧셈 뺄셈 곱셈, 행렬과 상수의 곱셈을 operator로 만들어준다. 물론 단위행렬로 만들어주는 함수도 추가해준다.)
3차원 벡터클래스도 제작하고,
(벡터의 외적, 내적 벡터끼리의 곱셈 뻴셈 덧셈, 벡터와 상수의 곱셈 함수도 만들고...)
카메라 클래스는 해골책이네 용책에 나와있는것을 그대로 쓰면된다.
그리고 여러가지 정보를 찾아가면서 함수를 채워넣어가면 된다.
랜더링 하는 방법은 점을 이용해서 API함수에 있는 점을 잇는 함수를 쓰면 됩니다.
컬링이랑 라이트를 뺀 랜더링파이프라인으로 구현한 것이다~!!
'프로그래밍 > 예전글' 카테고리의 다른 글
vmWare를 이용하여 Linux 설치(Fedora) - 3 (0) | 2010.08.13 |
---|---|
vmWare를 이용하여 Linux 설치(Fedora) - 2 (0) | 2010.08.12 |
vmWare를 이용하여 Linux 설치(Fedora) - 1 (0) | 2010.08.12 |
GetMessage함수와 PeekMessage함수 그리고 데드타임 (0) | 2010.04.01 |
C++ Mutex Class (0) | 2010.02.08 |