// 1000 밀리초마다 한바퀴씩 (2*pi) 회전 애니메이션 행렬을 생성.
// (1.0f * D3DX_PI) 회전속도
FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 1000.0;
// y축을 회전축으로 회전하는 행렬을 생성
D3DXMatrixRotationY(&matWorld, fAngle);
// 시점 좌표값 설정 d3dx9math.h 참조
// 뷰 행렬을 정의하기 위해서 3가지의 값이 필요
D3DXVECTOR3 vEyePt(0.0f, 3.0f, -5.0f); // 1. 눈의 위치를 0.0f, 3.0f, -5.0f - 카메라 좌표
D3DXVECTOR3 vLookatPt(0.0f, 0.0f, 0.0f); // 2. 눈이 바라보는 위치(0,0,0) - 사물의 위치
D3DXVECTOR3 vUpVec(0.0f, 1.0f, 0.0f); // 3. 천정방향을 나타내는 상방 벡터 ( 0,1,0)
D3DXMATRIXA16 matView; // 좌표를 저장할 변수 클래스 선언
// 1,2,3의 값으로 뷰 행렬 생성
D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);
D3DXMatrixLookAtLH 함수 설명 및 왼손계 설정구현
http://blog.naver.com/peroz/60057859092
// 프로젝션 행렬을 정의하기 위해서는 시야각(FOV=Field of View)과 종횡비(aspect ratio), 클리핑 평면의 값이 필요
D3DXMATRIXA16 matProj;
// matProj : 값이 설정될 행렬
// D3DX_PI / 4 : FOV(D3DX_PI/4 = 45도)
// 1.0f : 종횡비
// 1.0f : 근접 클리핑 평면(near clipping plane)
// 1.0f : 원거리 클리핑 평면(far clipping plane)
// 투영 변환 행렬 함수
D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f);
D3DXMatrixPerspectiveFovLH()함수와 D3DXMatrixLookAtLH()함수의 'LH' 는 왼손 좌표계를 의미한다.
위의 D3DXMatrixPerspectiveFovLH()함수와 D3DXMatrixLookAtLH() 함수를 각각 D3DXMatrixPerspectiveFovRH(), D3DXMatrixLookAtRH() 함수로 변경하면 회전하는 방향이 달라진다.
사용 lib
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"winmm.lib")
사용된 Header File
#include <Windows.h>
#include <MMSystem.h>
#include <d3dx9.h>
#include <d3d9.h>
// (1.0f * D3DX_PI) 회전속도
FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 1000.0;
// y축을 회전축으로 회전하는 행렬을 생성
D3DXMatrixRotationY(&matWorld, fAngle);
// 시점 좌표값 설정 d3dx9math.h 참조
// 뷰 행렬을 정의하기 위해서 3가지의 값이 필요
D3DXVECTOR3 vEyePt(0.0f, 3.0f, -5.0f); // 1. 눈의 위치를 0.0f, 3.0f, -5.0f - 카메라 좌표
D3DXVECTOR3 vLookatPt(0.0f, 0.0f, 0.0f); // 2. 눈이 바라보는 위치(0,0,0) - 사물의 위치
D3DXVECTOR3 vUpVec(0.0f, 1.0f, 0.0f); // 3. 천정방향을 나타내는 상방 벡터 ( 0,1,0)
D3DXMATRIXA16 matView; // 좌표를 저장할 변수 클래스 선언
// 1,2,3의 값으로 뷰 행렬 생성
D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);
D3DXMatrixLookAtLH 함수 설명 및 왼손계 설정구현
http://blog.naver.com/peroz/60057859092
// 프로젝션 행렬을 정의하기 위해서는 시야각(FOV=Field of View)과 종횡비(aspect ratio), 클리핑 평면의 값이 필요
D3DXMATRIXA16 matProj;
// matProj : 값이 설정될 행렬
// D3DX_PI / 4 : FOV(D3DX_PI/4 = 45도)
// 1.0f : 종횡비
// 1.0f : 근접 클리핑 평면(near clipping plane)
// 1.0f : 원거리 클리핑 평면(far clipping plane)
// 투영 변환 행렬 함수
D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f);
D3DXMatrixPerspectiveFovLH()함수와 D3DXMatrixLookAtLH()함수의 'LH' 는 왼손 좌표계를 의미한다.
위의 D3DXMatrixPerspectiveFovLH()함수와 D3DXMatrixLookAtLH() 함수를 각각 D3DXMatrixPerspectiveFovRH(), D3DXMatrixLookAtRH() 함수로 변경하면 회전하는 방향이 달라진다.
사용 lib
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"winmm.lib")
사용된 Header File
#include <Windows.h>
#include <MMSystem.h>
#include <d3dx9.h>
#include <d3d9.h>
'Programming > DirectX' 카테고리의 다른 글
[김재진]행렬의 곱셈 및 항등행렬 설명 (0) | 2010.05.27 |
---|---|
[손동진] 재질과 광원 (0) | 2010.05.27 |
DirectX-정점 (1) | 2010.05.20 |
DirectX-전체 화면 하는 방법 (1) | 2010.05.19 |
스터디때 쓰일 발표 자료.. (1) | 2010.05.17 |