ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 타이머
    Software/DirectX 2024. 5. 24. 09:27
    728x90

    Table of Contents

    1. 타이머



     

    1. 타이머

     게임에서 오브젝트의 애니메이션은 필수 요소이다. 오브젝트가 애니메이션을 수행하려면 프레임마다 일정한 시간이 요구되는데 특히 프레임간 경과시간(Elapsed time)을 정확하게 측정할 수 있어야 한다. 프레임이 높을 경우 프레임간 시간이 짧으므로 정교한 타이머가 필요하다.

     

    • 성능 타이머(Performance counter)

      윈도우가 제공하는 정교한 타이머이며 Performance counter라고도 부른다. Windows.h에 들어있다.

     

    성능타이머 사용예시
    __int64 currTime;
    QueryPerformanceCounter((LARGE_INTERGER*)&currTime);
    위 함수를 통해 현재 시간 값을 64비트 정수로 돌려준다.
    
    __int64 countsPerSec;
    QueryPerformanceFrequency((LARGE_INTERGER*)&countsPerSec);
    초 단위 시간을 얻으려면 Frequency 함수를 이용해서 주파수를 얻고
    주파수의 역수 취해서 틱당 초 를 얻는다.
    
    mSecoundsPerCount = 1.0 / countsPerSec;
    • 두 Count의 차이를 정확하게 측정해야 원하는 시간차 Elpased time을 얻을 수 있다.
    • 다중 프로세서의 경우 이 함수가 어떤 프로세서에서 실행되는지에 따라 결과가 달라져서 안된다. 하지만 하드웨어 버그로 다른 값이 나올 수 있다. 따라서 SetThreadAffinityMask함수를 적절히 사용해서 응용 프로그램 주 스레드가 다른 프로세서로 전환되는 걸 방지시켜야 한다.
    • Timer 클래스는 프레임마다 델타T (현재 프레임시간- 지난 프레임시간)을 업데이트에 넘겨준다.
      업데이트에서는 이 시간을 활용해서 각종 시간처리를 한다.
    • 게임 시작 후 현재까지 흐른 TotalTime을 기록한 변수도 유용하게 사용된다. TotalTime은 게임이 일시 정지 되었을 때에는 누적되지않게 구성해야 사용이 편리해짐을 유의하자.

     

     

    728x90

    'Software > DirectX' 카테고리의 다른 글

    6. 입력조립기 ( Input Assembler )  (0) 2024.05.24
    5. 파이프라인과 3차원 표현  (0) 2024.05.24
    3. DirectX 초기화  (0) 2024.05.24
    2. CPU와 GPU의 상호작용  (0) 2024.05.24
    1. DirectX 기초  (0) 2024.05.24