[MFC_OpenGL] 개발 환경 구성

2014. 10. 15. 15:23프로그래밍/OpenGL

1. 목적

  mfc를 사용하여 게임 개발환경을 구축한다.

 

[mfc를 사용하여 게임 개발환경 구현하기]

  간단한 게임 소스들을 보면 대부분 API를 통해 구현되어 있다.

아무래도 가볍기 때문에... 하지만 MFC도 구성하기에 따라서 어느정도 가벼운 환경으로 변경이 가능하다.


우선 MFC의 구성을 살펴보면...


크게 APP, MainFrame, View, DOC 클래스로 구성된다.

이 중 App, MainFrame 클래스만 살려두고 나머지 필요없는 View, DOC와 기타 몇 가지를 제거하여 간소화 하여보자.

수정 및 변경에 관한 자세한 내용은 직접 검색해주세요.


가. 프로젝트 생성

  - 비쥬얼 스튜디오에서 MFC 응용프로그램을 생성합니다.


나. Doc, View 파일 제거

  - 전 파일 삭제 후 관리하기 편하게 헤더와 소스를 하나로 몰았습니다.


다. 이제 삭제한 View, Doc와 관련된 소스를 정리하겠습니다.. 안 하면 에러 뜨겠죠 ;;.;;

  - App 클래스의 헤더파일에 include 선언되어 있는 View, Doc를 지워줍니니다. 


- 그리고 컴파일 하면 아래와 같이 에러가 뜨는데요...


- 아래 그림과 같이 연결되어 있던 Doc와 View를 지워줍시다.


라. 이제 Run 함수와 OnIdle 함수를 추가합니다.

  - 클래스 뷰에서 App 클래스를 선택하고 속성 창에서 재정의를 눌러줍시다. 그리고 나온 목록 중 Run, OnIdle을 추가해주세요.


 - 그럼 Run 함수와 OnIdle 함수가 추가 됩니다.


마. 좀 더 간소화 하기[선택]

  - 메뉴를 포함한 나머지 필요없는 부분을 제거하겠습니다. 필요하신 분들은 제거하지 않으셔도 됩니다.

  - About 다이얼로그 제거, 아래 내용을 전부 제거합니다.


- 메시지 맵 제거, 메시지 맵에 등록된 메시지를 지웠습니다. 게임에서는 필요없다 생각되네요.


- 메뉴 제거, MainFrame 클래스의 PreCreateWindow 함수를 아래와 같이 변경해줍시다.


바. MainLoop함수 생성 및 InitInstance 구성

우선 MainFrame 클래스에 MainLoop 함수를 생성합니다.

이 함수에서 모든 동작을 관리할 생각입니다.



또한 App에서 접근하기 위해 MainFrame 의 생성자를 Public으로 옮겨주세요. Protect로 되어 있을거에요.


사. App 클래스의 InitInstance 수정

  - 우선 MainFrame에 접근하기 위해 App 클래스의 헤더파일에 아래와 같이 추가합시다.


  - 그리고 InitInstance 함수에서 아래 부분을 삭제해 줍니다.


  - 삭제 후 아래와 같이 추가합니다.


사. Run 함수 작성

  - 생성한 런 함수에서 프로그램의 기본 루틴을 구성합니다. 드디어 친숙한 로직이...


아. OnIdle 함수 작성

  - OnIdle 함수는 MainFrame에 생성된 MainLoop 함수를 호출합니다.


결과적으로 이제 다른 것은 신경쓰지 않고 MainFrame 의 MainLoop함수를 구성하면 되게 되었습니다.


프로젝트 첨부

MFC_OPENGL_TestBase.zip