게임개발/팁

루프내에서 여러번 호출되는 함수의 First Time구분하기.

쑥갓 2005. 4. 11. 03:00

가장 쉽게 생각할 수 있는 기본적인 방법으로는
bool로 플래그를 두고
함수에 들어가면 true로 세팅하고
매 루프마다 clear를 해주는 방법이 있다.

그러나 이게 영 비효율적으로 보이는지라.
timeGetTime()으로 시간을 기억해두고 ( 물론 매번 호출하진 않고 루프마다 한번 호출해서 전역에 저장해둔다 )
시간이 다르면 first time이므로 멤버 변수로 현재의 time값을 저장해둔다..
라는 생각이었는데

api에서는 잘돌아가는게 mfc에선 정상적이지 않는 현상이 발견되었다.
timeGetTime()의 한계-_-(실제로 timeGetTime은 밀리세컨드 단위이기때문에 1000프레임 이상의 수치는 처리할 수 없다.. 그 이하의 수치 일때 도 같은 Time이 들어올 수 있다. )일수도 있겠지만 IDLE메세지가 들어왔을때 함수 호출을 하게 해놔서 idle이 한번의 메세지루프에 여러번 들어올수 있다(라는 생각은 전혀 안해봤었는데-ㅅ-)

어쨋건 그런 연유로 그냥 DWORD로 매 루프마다 1씩 올려주는 카운터를 만들고 카운터를 기억하게 했다.

애매한 time보다야 확실하긴 하다만
왠지 쓸데없는 전역변수가 늘어난거같은 느낌은 지울 수 없다-ㅅ-;;