하나의 장면을 만들고 렌더링하는 데 필요한 개념을 배웠다.
이제 배운 내용을 실전에 적용하여 Direct3D 내에서 기학적인 물체를 그리는 방법을 살펴볼 것이다.
목표
- Direct3D에서 버텍스와 인덱스 데이터가 보관하는 방법을 배운다.
- 렌더 상태를 이용해 기하물체가 렌더링되는 방식을 변경한다.
- 장면을 렌더링하는 방법을 배운다.
- D3DXcreate* 함수들을 이용해 좀더 복잡한 3D 형태를 만드는 방법을 배운다.
버텍스/인덱스 버퍼
버텍스와 인덱스 버퍼 만들기
버퍼 메모리에 접근하기
버텍스 버퍼와 인덱스 버퍼에 대한 정보 얻기
렌더 상태
드로잉 준비
버택스/인덱스 버퍼를 이용한 드로잉
IDirect3DDevice9::DrawPrimitive
IDirect3DDevice9::DrawlndexedPrimitive
장면의 시작/끝
D3DX 기하 물체
예제 애플리케이션: 삼각형, 입방체, 주전자, D3DXCreate*
요약
- 버텍스 데이터는 IDirect3DVertexBuffer9 인터페이스에 보관되며, 인덱스 데이터는 IDirect3DIndexBuffer9 인터페이스에 보관된다. 버텍스와 인덱스 버퍼를 이용하는 것은 데이터를 비디오 메모리 내에 보관할 수 있기 때문이다.
- 정적인(각 프레임마다 갱신할 필요가 없는) 기하보정의 경우에는 정적 버텍스/인덱스 버퍼에 보관해야 하며, 동적인 기하정보(각 프레임마다 갱신해야 하는)는 동적 버텍스/인덱스 버퍼에 보관해야 한다.
- 렌더 상태는 기하정보가 렌더링 되는 방식에 영향을 주며, 한 번 지정되면 바뀔 때까지 영향을 미친다. 모든 렌더 상태는 초기의 디폴트 값을 가진다.
- 버텍스 버퍼와 인덱스 버퍼의 내용물을 그리기 위해서는 다음의 과정을 거쳐야 한다.
- IDirect3DDevice9::SetstreamSource 메서드를 호출하여 그리려는 버텍스를 포함하는 버텍스 버퍼를 스트림과 연결한다.
- IDirect3DDevice9::SetFVF 메서드를 호출하여 버텍스의 포맷을 지정한다.
- 인덱스 버퍼를 이용한다면 IDirect3DDevice9::SetIndices 메서드를 호출하여 이용하려는 인덱스 버퍼를 지정한다.
- IDirect3DDevice9::BeginScene와 IDirect3DDevice9::EndScene 메서드 호출블록 내부에서 IDirect3DDevice9::DrawPrimitive나 IDirect3DDevice9::DrawIndexedPrimitive 메서드를 호출하여 드로잉을 수행한다.
- D3DXCreate* 함수를 이용하면 구체나 원기동, 주전자 등과 같은 좀더 복잡한 3D 물체의 기하정보를 만들어낼 수 있다.
반응형
'Programming > DirectX' 카테고리의 다른 글
지면 만들기 (0) | 2016.07.02 |
---|---|
행렬을 이용한 회전 연습 (0) | 2016.07.01 |
버텍스를 이용해 폴리곤 띠우기 (0) | 2016.06.27 |
fatal error C1859: 'pch' 컴파일 에러 (0) | 2016.03.25 |
2장 - 렌더링 파이프라인 (6) | 2016.01.11 |
1장 - DirectX 9 기초와 초기화 (0) | 2016.01.10 |
win32 API Hello 띄워보기 (0) | 2016.01.09 |
DirectX 공부하기 위한 환경설정 (0) | 2016.01.08 |