-
win32 게임 만들기(7-2) -Scene ManagerWindows Programming/win32 게임엔진만들기 2022. 4. 25. 16:23
update는 이제부터 CsceneMgr update()로 교체
render도 화면 클리어후 CSceneMgr에 씬레더링으로 교체
씬을 업데이트하고 씬을 다시 렌더하고 m_memDC로 메인윈도우에 붙여넣기 하면 우리가 보게된다.
CSceneMgr에 update와 render는 현재 씬의 상태를 업데이트하고 렌더를 하여야 한다.
(현재는 START씬 하나 뿐이지만,)
앞으로 생격날 각각의 모든 씬들은 해당 씬이 시작될때 초기작업을 해주어야 하는데, 그 초기작업들은 각 씬마다 다를 것이다.
또, 씬과 씬의 전환이 발생 할때 벗어나는 씬 입장에서는 씬을 빠져나갈때 해주어어야 할 일들을 각 씬마다 다르게 구현을 해주어야 한다.
(부모 포인터 타입으로 함수를 호출시키면 각 파생된 자식 클래스 별로 자기의 함수가 호출 되어야함)
부모클래스인 CScene은Start함수를 구현할 필요가 없다... (인터페이스 역할 순수가상함수가 되어야함)
장점
1. 부모클래스에 해당하는 씬은 직접 객체 생성이 불가능 (추상클래스)
2. 상속 받은 클래스들은 start,Exit를 실수로라도 구현을 하지않으면 안된다고 알려줌
자식 씬인 CScene_Start::에서 씬의 들어갈때 초기작업 물체를 추가 하는 코드
부모 쪽에 Addobject() 로 자식 쪽에 오브젝트들을 m_arrObj 벡터에 추가 해준다.
추가한 물체들의 delete 처리는 부모 클래스인 CScene에서 일괄 처리 (모든 씬에 모든 오브젝트들 삭제)
씬의 업데이트 렌더
CObject의 업데이트 렌더
업데이트 렌더 호출 흐름도
- CCore->update,render 에서 CSceneMgr호출
- CSceneMgr->update,render 에서 m_pCurScene(현재씬) 호출
- m_pCurScene(현재씬)->update,render 에서 CObject 호출
- 최종 적으로 CObject 에서 눌린 키값에 update처리를 하여 자신의 위치와 크기를 렌더
출처참고:
'Windows Programming > win32 게임엔진만들기' 카테고리의 다른 글
win32 게임 만들기(9) -Resource (1) 2022.05.14 win32 게임 만들기(8) -Object (0) 2022.05.01 win32 게임 만들기(7-1) -Scene Manager (0) 2022.04.23 win32 게임 만들기(6) - Key Manager (0) 2022.04.17 win32 게임 만들기(5)-Double Buffering (0) 2022.04.17