[1]. 지형을 출력해본다.
[2]. 지형 객체를 그리기 위한, Terrain 이라는 객체 하나와, 그 Terrain 을 그려내기 위한 준비물인, Terrain_Buffer 그리고, Terrain 용 Shader File 을 준비한다.
[3]. VIBuffer 를 상속받는, VIBuffer_Terrain 클래스를 만들어서, 시작하는데, 이 클래스의 Create 부분은, Terrain 용도이니, 높이맵 즉 Height 까지 고려해서 출력이 되게끔 만들어 볼 것이다. 따라서 HeightMap 파일의 경로를 받아올 수 있게 하나 파라미터로 추가하고, 작업을 시작한다.
[4]. VIBuffer_Terrain 의 원형 객체 생성 함수 (Initialize_Prototype) 에서 파일 입출력을 통해, 해당 높이맵 파일을 읽어올 것이다.
[5]. 높이맵 파일을 읽어올 때, 알아둬야 할 것은 bmp 파일, 즉 비트맵은 3개의 헤더 파일로 구성되어있는데,
[6]. 그러므로, Height 정보 때문에, Info.h 에서의 픽셀의 갯수와 실제 픽셀의 색깔 정보가 필요하다.
[7]. api 파일 입출력의 방식이 하나의 헤더 파일을 읽고, 다음 헤더까지 읽는 방식이라서, 각각 ReadFile 함수를 3번 호출해야 한다.
[8]. Info.h 을 Readfile 하고 나서, 해당 파일 이미지의 가로 세로 픽셀 갯수를 미리 선언해둔 멤버변수 X , Z 에 담아둔다. 그리고 결국 정점의 갯수는, 그 X 와 Z를 곱한 값이 되겠다.
[9]. 높이맵을 사용할 것이라서, Engine_Struct.h 에 높이맵 용 , vNormal 이 담긴 구조체로 사용할 것이다. VTXNORTEX
[10]. 지형은 이제 좀 크기 때문에, 수많은 정점 갯수들이 쓰일 것이므로, VIBuffer_Rect 와 다르게, 4byte 로 할 것이다.
[11]. VTXNORTEX 구조체를 파일 픽셀의 총 갯수 (정점 총 갯수) 만큼 동적할당을 하고, 2중 루프문으로, 정점[인덱스] 로 VTXNORTEX 구조체 데이터 변수들의 값을 채워준다.
[12]. 여기서 vPosition 의 y 값은 높이 맵이기 때문에, 위의 Pixel.h 에서 R G B 중에서 B 을 뽑아내서 그 값 만큼 높이마다 다른 값을 줄 것이다.

[13]. 그렇게 Vertex Buffer 할당이 끝났으면, 이제 Index Buffer 도 작업을 시작한다.
[14]. 인덱스의 갯수는, ( 정점X 갯수 - 1 ) * ( 정점 Z 갯수 - 1 ) * 2 * 3 과 같다. * 2 연산을 하는 이유는, 사각형이 아닌 삼각형을 기준으로 하고, * 3 을 하는 이유는 해당 삼각형에는 인덱스가 3개씩 담겨있기 때문.
그리고 vTexCoord 는, Texture U V 좌표계 라고 보면 되겠다. 현재는, 2중 루프를 돌면서 ( 0 ,0 ) 에서 부터 우측 상단으로 가면서 ( 1 , 1 ) 로 가는 방식인데,
