본문 바로가기
Lib/DirectX

DrawPrimitive

by KingCat 2014. 9. 22.

<DrawPrimitive -> DrawIndexPrimitive>

 

1개의 삼각형을 그릴려면 3개의 Vertex가 필요
여러개를 그리면 중복되는 Vertex가 생기므로 낭비가 생긴다.

 

방법 1. Triangle Strip
- 하나의 중점 기준으로 Pan 형태의 그리는 형태
- Vertex 수를 왕창 줄일 수 있지만, 한붓 그리기 형태의 띠 모양의 삼각형이 아니면 그리기 힘들다.
- 바로 앞의 2개의 Vertex와 새로 추가된 Vertex 1개를 합쳐서 삼각형을 그린다.

 

방법 2. Triangle Fan
- Triangle Strip과 원리는 비슷하다.
- 마찬가지로 Vertex 수를 왕창 줄일 수 있지만, Fan 형태의 삼각형이 아니면 그리기 힘들다.
- 제일 앞의 1개와 바로 앞의 1개, 새로 추가된 Vertex 1개를 합쳐서 삼각형을 그린다.

 

방법 3. Indexed Primitive (Triangle List)
- Vertex 중복 문제 해결을 위해 Vertex는 정해 놓고 Triangle은 Vertex들의 Index로 그리는 형태
- Index 버퍼를 따로 만들어 그리는 순서를 Index 버퍼에서 정해준다.
- 용량이 비슷하다? Vertex 버퍼는 Vertex 하나를 표현하는데 12byte를 사용하나 Index 버퍼는 2byte(WORD)면 표현 가능
- DrawIndexPrimitive 사용시 DrawPrimitive때보다 몇개의 매개변수가 더 추가된다.
- 이 추가된 매개변수는 메모리 공간 할당시 (Lock시) 사용하기 위해서 필요하다.
- Base Index는 Index가 가르키는 값에 일정값을 더한 Index를 가지고 그리도록
- Min Index는 Index Buffer 중에 가장 작은 Index
- Number Index는 Index Buffer 최대값과 최소값이 거리 차이

'Lib > DirectX' 카테고리의 다른 글

Texture 출력하기  (0) 2014.09.22
RenderState  (0) 2014.09.22
Depth Buffer에 관하여  (0) 2014.09.22
Indexed Primitive 구현과 Alpha Blending 사용  (0) 2014.09.22
DirectX 내부에서의 텍스쳐 합성  (0) 2013.12.11