Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[SR] Time / GameInstance 본문

SR

[SR] Time / GameInstance

Unknowns 2021. 12. 22. 17:57

Engine_Defines

 

Engine_Macro

-> unsinged long Destory_Instance로 만든이유

-> RefCnt를 관리하기 위해

 

Engine_Function

 

 

 

 

 

Timer

Timer클래스는 Engine솔루션에 추가해준다

왜?

다른 Client에서도 Timer을 써야하기 떄문

 

선언부

-> Base 자식클래스이니 무조건 Free함수가 따라 붙는다.

-> 생성자 private이니 외부호출불가

-> static으로 맴버변수 하나 만든다

 

-> 싱글턴 으로 안만드는이유?

-> 타이머 클래스가 상황에따라 여러개가 만들어질수가 있다.

-> 타이머를 보관할수있는 매니저 클래스를 따로 만들것이다.

정의부

 

밀리세컨드?

-> 밀리세컨드 = 1000/1초

-> 밀리세컨드는 1초당 1000프레임이다

 

FPS?

-> Frame Per Second

-> 1초당 화면이 얼마나 다시 그려지냐

-> 60fps = 1초에 화면을 60번 그린다

 

밀리세컨드보다 더 촘촘한 기능이 필요하다

-> Query Performance Frequency   
-> Query Performance Counter      

Cpu는 초당 몇백만번의 연산을 해줌
이게 초당 얼마나 돌아가는지 현재 얼마인지 얻어와서
이전프레임과 현재프레임의 시간간격을 구해낸다.

 

초당 값이 100만이 들어왓고 

이전 프레임에 카운터가 예를들어 10만
현재 프레임의 카운터가 15만
그러면 현재 프레임 - 이전 프레임 = 5만
100/5 = 20분의 1 즉 20분의 1초 지났단 애기

1초당 돌아가는게 100만인데

이전 프레임 간격과 현재 프레임 간격이 5만
즉 그렇다는 말은 100/5만

프레임과 프레임 사이의 시간을 보고 DeltaTime 이라 한다.

 

 

 

 

Timer_Manager

 

선언부

-> _tchar 일떄 CTimer에 보관한다

-> 맵에 키를 _tchar를 쓰면 속도가 빠르다.

-> 맵에 키를 string을 쓰면 탐색이 용이하다.

-> _tchar을 쓰면 가벼운대신 검색할떄 모든멤버를 다 순회하고 같은 문자열이 있는지 계속 비교한다.

-> stirng을 쓰면 무겁다 문자열을 저장하는것과 같다 단순 문자열로 바로 find가 가능 string을 쓰면 m_Timer.find(); 가 가능 맵에 이진탐색 가능

-> 결론 stirng 너무 필요없는 기능이 많아 무거워서 프레임 저하가 우려된다 게임은 프레임이 생명

 

 

 

 

 

정의부

-> AddTimer에 객체를 던져야된다

-> 객체를 던지지않고 혹시 그 함수 안에서 객체를 만들순 없을까?

-> 굳이 add_Timer에 Ctimer를 추가하지 않아도된다

-> Create(); 함수를 이용하자

-> 굳이 객체를 받아올 필요가 없다

-> 가급적이면 어떤 함수의 인자로 객체를 던져야되면

-> 혹시나 그 객체를 함수안에서 만들순 없을까 생각하자

-> 장치를 받아서 Create()에 던져도 된다.

 

 

 

GameInstance

 

선언부

-> final로 상속을 막는다

-> 클라이언트로 직접 보여주기위한 클래스 (Engine_DLL) 해준다

-> 이 클래스는 엔진내에 정의되어있는 다양한 매니저 객체들을 오픈해주는 역활이다

-> 엔진에 있는 핵심적인 기능들은 GameInstance에 선언 진짜로 보여줘야하는 함수들만 오픈해주는 효과

-> Release_Engine() 엔진을 정리한다. 엔진에 있는 모든 릭이 해소되길 원한다

-> MainApp::free()에서 개임인스턴스를 호출하고싶다

-> 하지만 메모리를 정리하는 함수에서 새로운객체를 만들려고하면 쳐맞아야한다.

-> 그렇지만 MainApp에 GameInstance::Release_Engine을 호출하고싶다.

-> static을 붙인다 (정적변수: 프로그램시작 ~ 프로그램종료)

 

정의부

 

 

 

-> MainApp::Free()에  CGameInstace::Release_Engine(); 호출

'SR' 카테고리의 다른 글

[SR] 버퍼(Buffer)  (0) 2022.05.24
[SR] #1. Rendering PipeLine  (0) 2021.12.23
[SR] Graphic_Device  (0) 2021.12.23
[SR] 프레임워크2 (DLL 파일 피싱)  (0) 2021.12.10
[SR] 프레임워크(1)  (0) 2021.12.09