WIN32API FrameWork/한단계씩 직접 구현

40. Y Sort Rendering

2022. 5. 28. 22:25

http://hyrule.tistory.com/111 

 

*** 공부 방법 ***

1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처

hyrule.tistory.com

 


[사전 지식]

- STL에서는 기본적으로 정렬 알고리즘을 제공하고 있다.

- (자료구조).sort(bool 타입을 반환하는 함수 포인터)

-- 함수 포인터로는 전역 함수만을 받는다. 이 함수 포인터로 정렬 기준을 정한다.

--- static 멤버 메소드로 선언하면 전역 함수와 똑같이 취급되므로, 사용할 비교 메소드를 static으로 선언해주자.

 


- 지금 게임을 구동시켜보면, 무조건 몬스터가 플레이어 위에 렌더링되는 것을 확인할 수 있다.

- 씬이 생성될 떄 CGameObject를 생성한 순서대로 렌더링되고 있기 때문이다.

- 일반적인 2D게임은 화면의 밑에 있는 캐릭터가 화면의 위에 있는 캐릭터를 가리고 있다.

- 게임오브젝트의 Y축 값이 낮은 순을 기준으로 렌더링하는 것이다.

- 이것을 Y소팅이라고 한다.


class CScene

- 렌더링 메소드 안에서 각 CGameObject의 발 밑 Y축을 기준으로 소팅해준다.


- 근데 그냥 이렇게 해놓으면 문제가 발생한다.

- Y축이 가장 낮은 '배경화면'까지 정렬되어 배경화면이 가장 마지막에 그려지고, 결국 배경화면이 화면을 다 가려버리게 되는 것이다.

- 그러므로 '출력 그룹'을 나누어놓아 해당 그룹 안의 오브젝트 끼리만 정렬을 시켜줄 필요가 있다.

 


flag.h

< enum class ERender_Layer >

- 렌더링 그룹을 나누기 위한 열거체,

- 일단 기본적으로 Back, Default, Effect, Max 정도만 생성하자. Max는 배열 선언을 위한 원소이다.


class CGameObject

< m_ObjList >

- 이제 CGameObject가 그룹별로 나누어져야 하므로,

- 기존의 리스트를 ERender_Layer의 사이즈만큼 크기의 배열로 나눠 준다.

 

< ERender_Layer m_RenderLayer >

- 이제 게임오브젝트는 각자 자신이 어느 그룹에 속해야 하는지를 변수로 가지고 있는다.

- 생성자에서 기본값으로 Default 그룹에 설정해준다.

- 그리고 다른 그룹으로의 분류가 필요한 오브젝트들만 생성자에서 값을 따로 설정해 준다.

 

- 이제 m_ObjList는 배열이 되었으므로 게임오브젝트를 생성하는 CScene::CreateObject() 메소드도 ERender_Layer에 맞는 배열 인덱스로 넣어주어야 한다.

- 소멸자와, Update(), PostUpdate(), Render() 메소드 안의 반복문도 모두 수정해준다.

 


소팅이 잘 되는것을 확인
GameFrameworkStepbyStep_40_YSorting.zip
3.96MB

저작자표시 (새창열림)

'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글

42. 충돌 처리 1  (0) 2022.05.29
41. 카메라  (0) 2022.05.29
39. 배경화면 생성 및 플레이어 이동  (0) 2022.05.28
38-1. 애니메이션을 등록하는 다양한 방법들  (0) 2022.05.28
38. 애니메이션 시퀀스 2(완료)  (0) 2022.05.26
'WIN32API FrameWork/한단계씩 직접 구현' 카테고리의 다른 글
  • 42. 충돌 처리 1
  • 41. 카메라
  • 39. 배경화면 생성 및 플레이어 이동
  • 38-1. 애니메이션을 등록하는 다양한 방법들
hyrule
hyrule
hyrule
C++ 프로그래밍 공부
hyrule
전체
오늘
어제
  • 분류 전체보기 (205)
    • C++기초 (50)
    • WIN32API FrameWork (109)
      • 한단계씩 직접 구현 (82)
      • 원본 (15)
      • 코드별 설명 개별저장(검색용) (12)
    • 자습 (21)
    • C++ TIPS (11)
    • 연습 노트 (3)
    • ETC (6)
    • DX2D StarCraft 모작 (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • notion
  • C++
  • Windows 11
  • 스타크래프트
  • Tistory
  • hello

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyrule
40. Y Sort Rendering
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.