티스토리 뷰

프로그래밍/게임 개발

[DirectX] 렌더링 파이프 라인

터프 프로그래머 2011. 4. 11. 08:18

파이프 라인]

로컬

스페이스

월드

스페이스

스페이스

후면

추려내기

조명

클리핑

투영

뷰포트

래스터

라이즈

모델링

스페이스

D3D

TS

_WORLD

D3DX

Matrix

LookAtLH

backface

culling

D3DCULL

projection

표현영역

삼각형

픽셀컬러

계산

- 로컬 스페이스

- 월드스페이스

: 로컬 좌표시스템(0,0,0)의 3D모델을 월드좌표 시스템으로 옮긴다.

D3DXMATRIX cubeWorldMatrix;

D3DXMatrixTranslation( &cubeWorldMatrix, -3.0f, 2.0f, 6.0f );

Device->SetTransform( D3DTS_WORLD, &cubeWorldMatrix );

drawCube();

- 뷰스페이스

: 월드 스페이스내의 카메라의 위치를 원점으로 이동한다.

D3DXMATRIX V;

D3DXMatrixLookAtLH( &V, &pEye, &pAt, &pUp );

- 후면 추려내기

: 폴리곤의 전면/후면중에 후면을 추려낸다. 보여주지 않는다. 그리기 연산을 하지 않는다.

Device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE/D3DCULL_CW/D3DCULL_CCW);

- 조명

- 클리핑

: 시야 볼륨(범위)외부의 물체를 추려내다. 보여주지 않는다. 그리기 연산을 하지 않는다

- 투영

: 3D장면을 2D 표현 , n차원에서 n-1차원을 얻는 과정, 원근투영(Perspective Projection)

즉 카메라에서 멀리 떨어진 물체는 가까운 물체에 비해 작게 나타난다.

이와 같은 타입의 투영은 3D장면을 2D이미지로 표현하는데 가장 적합하다.

D3DXMATRIX proj;

D3DXMatrixPerspectiveFovLH(&proj,

PI* 0.5f, // 2*PI = 360도 , PI=180도 , PI*0.5 = 90도

(float) W/ (float) H, // 종횡비 = 너비/높이 정사각형->직사각형

1.0, // 가까운 평면까지 거리

1000.0f // 먼 평면까지 거리

)

Device->SetTransform( D3DTS_PROJECTION, &proj );

- 뷰포트 변환

: 게임에서는 뷰포트는 보통 직사각형의 전체 화면이 되지만,

윈도우 모드에서는 클라이언트 영역이나 화면의 일부가 된다.

D3DVIEWPORT9 vp = { 0,0, 640, 480, 0, 1 };

Device->SetViewport(&vp);

- 래스터라이즈

: 2D삼각형을 그리는데 필요한 픽셀 컬러들을 계산하는 과정 ,

엄청난 작업양을 필요로 하므로 ,전용 그래픽 하드웨어에서 처리

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday