C# 으으 으으 으으 으으으 (3) 으으으 NHN NEXT
C# 으로 게임 엔진 만들기 (3)
김지환NHN NEXT
목표
• 지형 ( Grid ) 그리기
DRAW GRID
• 이제 점점 코드가 많아지고 중복되는 부분 또한 많아지니 미리 프로젝트를 다운로드 받으세요 .
• 중요한 부분에 대해서만 설명하도록 하겠습니다 .
사용했던 프로젝트https://github.com/jihwankim/CS_PPT
DRAW GRID
• 오늘의 결과물입니다 .개수와 크기를 정해서 격자를 그리고 화면에 렌더합니다 .
DRAW GRID
• Core Class 의 구조입니다 .
DirectX Class
C++
CLI
Wrapped
Core ClassInit
BeginScene
EndScene
CleanUp
SetCamera
GetDevice
D3D 를 초기화합니다 .
Render Begin
Draw End
할당된 리소스를 해제합니다 .
시점을 설정합니다 ..
생성된 Device 의 포인터를 반환 .
DRAW GRID
• Ground Class 는 격자 ( Grid ) 를 그려주는 클래스입니다 .
CGround Class
C++
CLI
Wrapped
Ground ClassCreate
OnRender
OnRelease
Core Device 에 Ground 를 생성Ground Render
할당된 메모리를 해제합니다 .
DRAW GRID
• 메인 코드입니다 . ( C# )
• 이전과 달라진 점은 Core 의 Render 부분이 DrawScene, EndScene 으로 분리되었습니다 .그리고 Ground 클래스가 새로 생겼습니다 .
DRAW GRID
• Ground Class 입니다 . ( C++ )
• Create 메소드를 보면 DirectX 를 초기화 할 때 생성한 Device 를 인자로 받아야 합니다 .이 Device 정보를 가지고 Vertex Buffer, Index Buffer 등을 생성합니다 .
그 외에 열 , 행의 개수나 격자의 크기를 받습니다 .
Ground Class ( 출처 : http://nowcampus.tistory.com/entry/10 )
DRAW GRID
CLI 로 래핑한 Ground 클래스입니다 .
Ground 는 초기화한 Device 정보가 필요합니다 .그래서 Core 의 GetDevice() 를 통해 그 정보를 받아야 하기 때문에 매개 변수로 Core 를 전달해 줘야 합니다 .
여기서 CLI 문법이 몇 개 나오는데 알아보도록 하겠습니다 .
DRAW GRID
CLICore::Core ^coreCLI 에서 관리 클래스 (ref) 는 복사 생성자를 가지지 못합니다 .그래서 매개 변수로 클래스를 넘겨주지 못합니다 .그러므로 인자로 Reference 를 넘겨주어야 하는데 그 때 사용하는 키워드가 ^ 입니다 .^ 는 C++ 의 * 과 비슷한 용도이며 Handle 이라 부릅니다 .
그래서 클래스를 넘겨줄 때 , 복사 생성자를 사용할 수 없으므로 핸들을 참조하도록 ^ 키워드를 사용하는 것입니다 .
Ground Object 를 이용해 기본적인 땅을 그려봤습니다 .
다음 PPT 엔 평지에 높이맵 ( Height map ) 을 적용하고 카메라 조작에 대해 설명하겠습니다 .
사용했던 프로젝트https://github.com/jihwankim/CS_PPT
DRAW GRID
END