*** 공부 방법 ***
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처
hyrule.tistory.com
- 오브젝트 컬링(Culling: 도태)이란 화면 밖의 물체들을 렌더링하지 않고 스킵하는 것을 말한다.
- 사실, 지난번에 간단한 컬링을 만들기는 했다.(근데 &&이 아니라 ||로 해놔서 작동이 되지는 않고 있었음...)
CGameObject의 위치(점)만 기준으로 해서 해당 점이 화면 안에 있을 때만 출력했던 것이다.
- 그런데 이게 사실 그냥 이렇게 해버리면 문제가 있다.
- 점인 m_Pos가 화면 밖으로 나가버리는 순간, 아직 몬스터의 끝 부분이 화면 밖으로 나가지 않았음에도 출력이 안되는 문제가 발생하는 것이다.
- 그러므로 오브젝트 컬링을 할때는 캐릭터의 모서리를 기준으로 박스 충돌 비슷한 느낌으로 해주어야 한다.
class CGameObject
< Render() >
- RenderLT를 먼저 구하고, 클라이언트 창과 박스충돌을 확인한다.
- 만약 창 밖에 있다면, Render() 함수 자체에서 return을 통해 빠져나가주면 된다.
- 몬스터를 창 밖으로 이동시켜 실제로 작동하고 있는지 테스트해 보았다.
- 우선 몬스터를 창 밖으로 위치시키고, 실행 도중 몬스터의 Render()함수에 중단점을 걸어준다.
- 계속 이동하다 보면 몬스터의 우측 모서리가 창 바깥에 위치하고 있어 return 되는 모습을 볼 수 있다.
'WIN32API FrameWork > 한단계씩 직접 구현' 카테고리의 다른 글
68. 타일 맵 (0) | 2022.06.10 |
---|---|
67. 화면의 확대 (0) | 2022.06.10 |
65. 간단한 점프 물리 법칙 (0) | 2022.06.09 |
64. 텍스트 출력 (0) | 2022.06.09 |
멤버함수와 전역함수의 이름이 겹칠 때 (0) | 2022.06.09 |