1. 프로젝트 생성
File-> 새 프로젝트 -> 'Win32 프로젝트' 선택 후 확인, 응용 프로그램 마법사에서 마침 선택합니다.
2. Win32 API 기본 코드 생성
- 엑셀레이터 코드 삭제
WIn32 API를 자동생성 코드로 생성하면 엑셀레이터 코드가 자동 생성됩니다. 엑셀레이터 코드는 단축키와 관련된 코드로, 다이렉트x에서는 사용되지 않습니다.
아래 노란색 영역을 지우고, 관련된 부분을 모두 삭제합니다.
관련 코드를 모두 삭제하고, 실행시켜보면 다음과 같은 화면이 나옵니다.
- 윈도우 핸들 g_hWnd 추가
윈도우 핸들 g_hWnd를 전역변수로 추가한 후, InitInstance 함수를 다음과 같이 수정합니다.
* Direct 3D환경의 셋업, 렌더링, 릴리즈 등 많은 곳에서 윈도우 핸들을 많이 사용하기 때문에, 전역변수로 만들어 언제든지 참조할 수 있도록 하는 것이 좋습니다.
-메시지 루프 수정
게임에서는 일반적으로 초기화->업데이트->렌더링(출력)->해제의 과정으로 진행되고, 업데이트와 렌더링을 반복(loop)하는 구조로 이루어져있습니다. loop를 계속하게 해줄 수 있는 부분을 win32에서 찾으면 메시지루프입니다.
아래 코드가 win32에서 자동으로 생성된 코드입니다.
GetMessage()는 실제 메시지가 들어왔는지 조사하다가 메시지가 발생하면 리턴하므로, GetMessage()는 대기상태를 만들게 됩니다. 게임에서는 대기상태 없이 지속적으로 업데이트와 렌더링을 반복해주어야 하므로 이를 수정하여야 합니다.
PeekMessage()는 대기상태가 없이 메시지만을 체크해주거나 제거가 가능한 함수이므로 위와같이 수정합니다.
3. Direct3D 라이브러리와 헤더 경로 등록
- 프로젝트->속성에서 경로를 등록한다
- 구성속성->VC++디렉터리->'포함 디렉터리'의 경로
C:\Program Files\Microsoft DirectX SDK (February 2010)\Include
- 구성속성->VC++디렉터리->'라이브러리 디렉터리'의 경로(64비트의 경우 x64폴더)
C:\Program Files\Microsoft DirectX SDK (February 2010)\Lib\x86
- 링커->입력->'추가 종속성'에 포함 라이브러리
dxguid.lib, d3d9.lib, d3dx9.lib;
4. Direct3D Device 생성
- 헤더파일 d3d9.h 추가
- Direct3D와 Direct3D Device 변수 추가
- Direct3D 초기화를 할 InitD3D함수 생성
- 화면을 그려주는 Render함수 생성
- 메모리 해제를 위한 Cleanup함수 생성
main함수와 wndProc함수에 각각을 다음과 같이 추가해줍니다.
-main함수
-wndProc함수
실행시켜보면 다음과 같은 화면이 나오는 것을 확인할 수 있습니다.
이로써 DirectX를 사용하기 위한 기본 코드를 완성하였습니다. 직접 코드를 매번 입력할 수 도 있지만 이런 방법을 사용하면 시간도 단축하고 더 편리한 장점을 갖고 있습니다.
'Software Development > Graphics' 카테고리의 다른 글
5. Vertices_2)정점 (0) | 2014.10.17 |
---|---|
5. Vertices_1)Vector (0) | 2014.10.17 |
4. DirectX 프레임워크(framework) (0) | 2014.10.14 |
2. DirectX 설치, VisualStudio 2010 설정, 프로젝트 생성 (1) | 2014.10.07 |
1. 3D 기초 용어 (0) | 2014.10.06 |