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

삼각형으로 지면 만들기

Jul 21, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 삼각형으로 지면 만들기

삼각형으로 지면 만들기

NHN NEXT 장문익

Page 2: 삼각형으로 지면 만들기

Triangle List를 이용한 지면 생성

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

를 만든다.

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

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

Page 3: 삼각형으로 지면 만들기

정점의 개수

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

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

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

정점의 총 개수

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

Page 4: 삼각형으로 지면 만들기

정점의 위치 설정

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

거리를 두고 생성한다.

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

여 정점의 위치를 정한다.

시작 위치

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

Page 5: 삼각형으로 지면 만들기

인덱스와 인덱스 버퍼 생성

생성할 인덱스의 개수

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

Page 6: 삼각형으로 지면 만들기

정점의 인덱스 순서

Page 7: 삼각형으로 지면 만들기

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

Page 8: 삼각형으로 지면 만들기

Drawing Two Triangles without Indexing

Page 9: 삼각형으로 지면 만들기

Drawing Two Triangles without Indexing

DrawPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

0, // StartVertex

2 ); // PrimitiveCount

Page 10: 삼각형으로 지면 만들기

Drawing Two Triangles with Indexing

Page 11: 삼각형으로 지면 만들기

Drawing Two Triangles with Indexing

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

0, // BaseVertexIndex

0, // MinIndex

4, // NumVertices

0, // StartIndex

2 ); // PrimitiveCount

Page 12: 삼각형으로 지면 만들기

Drawing One Triangle with Indexing

Page 13: 삼각형으로 지면 만들기

Drawing One Triangle with Indexing

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

0, // BaseVertexIndex

0, // MinIndex

4, // NumVertices

3, // StartIndex

1 ); // PrimitiveCount

Page 14: 삼각형으로 지면 만들기

Drawing One Triangle with Offset Indexing

Page 15: 삼각형으로 지면 만들기

Drawing One Triangle with Offset Indexing

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType

50, // BaseVertexIndex

0, // MinIndex

4, // NumVertices

3, // StartIndex

1 ); // PrimitiveCount