afTime.cpp
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:1k
源码类别:

其他游戏

开发平台:

Visual C++

  1. #include "afTime.h"
  2. float afTime::lastFrameTime = 0.0f;
  3. float afTime::totalFrameTime=0.0f;
  4. int   afTime::NumOfFrames=0;
  5. float afTime::fps = 0.0f;
  6. bool  afTime::firstUpdate = true;
  7. LARGE_INTEGER afTime::time0={0,0};
  8. LARGE_INTEGER afTime::time1={0,0};
  9. LARGE_INTEGER afTime::freq={0,0};
  10. void afTime::update()
  11. {
  12. lastFrameTime = 0.0f;
  13. fps = 0.0f;
  14. QueryPerformanceCounter(&time1);
  15. if(firstUpdate)
  16. {
  17. firstUpdate = false;
  18. QueryPerformanceFrequency(&freq);
  19. time0 = time1;
  20. }
  21. if(freq.QuadPart!=0)
  22. lastFrameTime =  (float)(time1.QuadPart-time0.QuadPart) / (float)(freq.QuadPart);
  23. if(lastFrameTime>0.0f)
  24. {
  25. fps = 1.0f / lastFrameTime;
  26. NumOfFrames++;
  27. totalFrameTime+=lastFrameTime;
  28. }
  29. time0 = time1;
  30. }
  31. float afTime::getLastFrameTime()
  32. {
  33. return lastFrameTime;
  34. }
  35. float afTime::getFPS()
  36. {
  37. return fps;
  38. }
  39. float afTime::getAverageFPS()
  40. {
  41. return NumOfFrames/totalFrameTime;
  42. }
  43. afTimeInstance afTime::getCurrentTime()
  44. {
  45. LARGE_INTEGER time;
  46. QueryPerformanceCounter(&time);
  47. return afTimeInstance(time);
  48. }
  49. float afTime::getTimeSince(const afTimeInstance& nInst)
  50. {
  51. LARGE_INTEGER time;
  52. QueryPerformanceCounter(&time);
  53. if(freq.LowPart!=0)
  54. return (float)(time.QuadPart-nInst.getQuadPart()) / (float)(freq.QuadPart);
  55. return 0.0f;
  56. }