• 글로벌 변수선언


// 시간을 구하기 위한 변수들

LARGE_INTEGER g_tSecond;   // 초당 클록수    ex) 360  (고정값)

LARGE_INTEGER g_tTime;      // 이전 클록수    

float   g_fDeltaTime;   // (현재클록수 - 이전클록수) / 초당 클록수 --> ex 36 / 360



  • wWinMain() // 함수내에서...

{

QueryPerformanceFrequency(&g_tSecond);    // 초당 클록수 가져오기

QueryPerformanceCounter(&g_tTime);  // 이전 클록수 가져오기


}


  • void Run() // 함수내에서

{

// Run한번당 36클록만큼 진동한다.

// 1초당 360번 클록이진동한다.

// 그럼 10번 불리겠지 Run은? -> 10프레임(10틱)이라 가정하는것.

// 0.1 * 300 하면 30이겠지     -> Run한번당 1/10 * 300 = 30 이라는 계산이 진행된다.

// 30 * 10 = 300                  -> 근데 Run이 총 10번 불리니까 우리가 원하는 300이라는 속도가 1초에 만들어지는 것이다.


// DeltaTime을 구해준다.

LARGE_INTEGER tTime;

QueryPerformanceCounter(&tTime);    // 현재 클록수 가져오기


// 호출1번당 이동시간 = 현재와 이전 클록수의 차이  /  1초당 클록수  ex)   36/360  

g_fDeltaTime = (tTime.QuadPart - g_tTime.QuadPart) / (float)g_tSecond.QuadPart;


  // 그럼... 렉이 아주심하게 생겨서, 다음 Run()이 호출 되는데에 엄청난 딜레이가 생겼다 가정하자

  //  현재와 이전 클록수의 차이가 360보다 커지는 경우가 존재할수있을까?

  // 뭐 있다고 치자, 

  // 이때는 조건문등을 이용해 min값을 처리하는등의 문제로 처리할 수 있을 것 같다만

  // 이거에대한 고민은 조금더 나중에 해보자.


// 이전시간을 지금시간으로 초기화해준다.

g_tTime = tTime;


// 플레이어 초당 이동속도 : 300

float fSpeed = 300 * g_fDeltaTime;

}


타이머 참고사이트 http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=735




+ Recent posts