삼각형으로 지면 만들기

16
삼각형으로 지면 만들기 NHN NEXT 장문익

Transcript of 삼각형으로 지면 만들기

삼각형으로 지면 만들기

NHN NEXT 장문익

Triangle List를 이용한 지면 생성

vertex buffer와 index buffer를 사용하여 2차원 배열처럼 나열된 정점을 인덱스로 연결하여 격자

를 만든다.

지면 생성에서 가장 중요한 것은 인덱스를 만드는 것이다.

그리고 격자를 구성하는 정점 인덱스를 식으로 만들어 설정하여야 한다.

정점의 개수

가로 3개, 세로 2개의 격자로 만들어진 지면은

몇 개의 정점으로 이루어져 있는가?

당연히 (3+1)*(2+1) = 12

정점의 총 개수

= (가로 격자 개수 + 1) * (세로 격자 개수 + 1)

정점의 위치 설정

지면을 생성할 것이므로 정점은 각각 일정한

거리를 두고 생성한다.

시작 위치를 설정하고, 일정 거리만큼 계산하

여 정점의 위치를 정한다.

시작 위치

= -0.1f * 격자 가로 개수 * 정점 간격 * 0.5f

인덱스와 인덱스 버퍼 생성

생성할 인덱스의 개수

= 격자의 세로 개수 * 격자의 가로 개수 * 6

정점의 인덱스 순서

인덱스와 정점 연결(2차원 배열을 1차원으로?)

Drawing Two Triangles without Indexing

Drawing Two Triangles without Indexing

DrawPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

0, // StartVertex

2 ); // PrimitiveCount

Drawing Two Triangles with Indexing

Drawing Two Triangles with Indexing

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

0, // BaseVertexIndex

0, // MinIndex

4, // NumVertices

0, // StartIndex

2 ); // PrimitiveCount

Drawing One Triangle with Indexing

Drawing One Triangle with Indexing

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

0, // BaseVertexIndex

0, // MinIndex

4, // NumVertices

3, // StartIndex

1 ); // PrimitiveCount

Drawing One Triangle with Offset Indexing

Drawing One Triangle with Offset Indexing

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

50, // BaseVertexIndex

0, // MinIndex

4, // NumVertices

3, // StartIndex

1 ); // PrimitiveCount