ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메탈슬러그 중간과정 3 - background
    Code/Winapi 2020. 6. 21. 01:22

     


    싱글톤에서부터 시작.

    Mainfrm 파일에서 InputManager, DBManager, RendManager 을 불러와서 관리할 수 있도록 함.

    각 Manager 는 static 정의되어 모든 곳에서 사용할 수 있는 instance를 가져오는 함수(GetInstance)로 관리함. 

    ※ static 정의된 함수는 전역변수처럼 쓸 수 있으므로 어디에서든 사용이 가능.
    그러므로 하단과 같이 사용할 수 있다. 
    (Mainfrm.cpp)

    그러므로 Mainfrm 파일에서 RendManager 를 Rend 해주어서 Background를 실행하도록 하는 Scene class 를 실행하도록 함.

    RendManger.cpp

    RendManager 에서 더블 버퍼링과 Object 를 담은 vector 내부에 접근하여 하나씩 출력할 수 있도록 함.

    m_vecRendObjce 안에는 Object 들이 종류별로 담겨있다.

    enum의 정의는 하단과 같다.

     Object 종류를 표시하는 enum (define.h)

     

    m_vecRendObj 라는 vector  내부의 Render 함수는 Object class의 Rend 함수를 가리키는데, 이를 ObjectImage class와 Background class가 상속받는다. 그래서 Rend 함수 정의를 피킹하면 하단과 같이 나타남.

     

    RendManager.cpp

    Background class 의 Render 함수로 가보면 하단과 같이 짜여져있음.

     

    Background.cpp

    실질적으로 이미지를 그려주고 움직이기 위한 과정들이 들어있음.

    m_obimg1,m_obimg2 는 Background class 안에 들어있는 ObjectImage class(이미지를 직접 담고있는 class)로, 하단과 같이Background의 멤버 변수로 정의되어 있음.

    여기에 들어있는 ImageLoading 함수는 이미지를 뿌려주는 함수가 들어있음.

     

     

    이 과정을 진행하기 위해 metalslug.cpp 의 wWinMain 함수에 하단과 같이 메세지 루프에 넣는다.

     

    metalslug.cpp

     

    메세지 루프를 돌기 전에 Mainfrm 을 생성하고 초기화한 뒤, 기본 메세지 루프에서는 run 만 해주는 것.

     

    이렇게 하면 계속해서 Mainfrm을 돌리면서 프로그램을 실행하게 된다.

Designed by Tistory.