블로그는 나의 힘!
[ Programing ]/API2009. 12. 24. 00:21

[ QueryPerformanceCounter() 이용하여 GetTickCount() 보다 더 정확한 프레임 측정 1 ]

 LARGE_INTEGER TimeBefore;      // 초기 초당 카운터 값
 LARGE_INTEGER TimeAfter;         // 초당 카운터 변화 값
 LARGE_INTEGER FrameInfor;       // 프레임 정보
 double  Time = 0;      // 초당 카운터 누적 값
 int   Count = 0;          // 카운터
 int   frame = 60;        // 초당 60 프레임


 QueryPerformanceFrequency( &FrameInfor );      // 초당 정보.
 QueryPerformanceCounter( &TimeBefore );         // 초당 카운터 변화값 

 printf( "Test : %f \n", (double)FrameInfor.QuadPart /60 );
 
 while( true ) 
 {

    QueryPerformanceCounter( &TimeAfter );

     //  1 초 / (현재값-이전값)  =  1 미만 시 1초

    Time = 1 / ( ( (double)TimeAfter.QuadPart -(double)TimeBefore.QuadPart ) / (double)FrameInfor.QuadPart );     


    //printf( "test : %f \t\t %f \n ", Time, 1 /Time );


    if( 1 > Time ) break;        // 1초가 되면 종료
    Count++;
 }
 
 printf( "TIME : %f \n", Time );
 printf( "COUNT : %d \n", Count );
 
 
 /////////////// 프레임 확인 ////////////////////

 int temp2 = Count % 60;
 frame = Count / 60;
 frame += temp2;
 
 /////////////// 출력 확인 //////////////////////
 int temp = 0;
 
 while( Count > 0 )
 {
  Count -= frame;  
  temp++;  
 }
 printf( "Count : %d, \t Frame : %d, \t Fr : %d, \t Fr%% : %d \n", Count, temp, frame, temp2 );


 return 0; 




- 핵심 : QueryPerformanceFrequency( &FrameInfor );        QueryPerformanceCounter( &TimeBefore );




추가 링크 : 

[프레임] QueryPerformanceCounter() 이용하여 GetTickCount() 보다 더 정확한 프레임 측정2

[ QueryPerformanceCounter() 이용하여 GetTickCount() 보다 더 정확한 프레임 측정 ]



Posted by Mister_Q