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

삼각형으로 지면 만들기

  • Upload
    -

  • View
    71

  • Download
    0

Embed Size (px)

Citation preview

삼각형으로 지면 만들기

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