MyTime.c
上传用户:cding2008
上传日期:2007-01-03
资源大小:1812k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // MyTime.c : Defines the class behaviors for the application.
  3. //
  4. // ModelMagic 3D and 'glOOP' (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1999
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. /////////////////////////////////////////////////////////////////////////////
  17. #include <windows.h>
  18. #include <time.h>
  19. #include "MyTime.h"
  20. /////////////////////////////////////////////////////////////////////////////
  21. // Global variable Definitions:
  22. //
  23. LARGE_INTEGER Frequency; // performance counter frequency
  24. LARGE_INTEGER StartCount; // performance counter start count
  25. LARGE_INTEGER ElapsedCount; // performance counter end count
  26. clock_t   ClockStart;
  27. BOOL MyTimeBegin()
  28. {
  29. // address of current counter value
  30. if(QueryPerformanceCounter(&StartCount))
  31. return TRUE;
  32. else
  33. // High frequency counter not available, use clock()
  34. ClockStart = clock();
  35. return TRUE;
  36. }
  37. double MyTimeElapsed()
  38. {
  39. _int64 iFrequency, iStart, iEnd;
  40. double dTime;
  41. // Get frequency of performance counter
  42. if(QueryPerformanceFrequency(&Frequency)) {
  43. // address of counter value
  44. QueryPerformanceCounter(&ElapsedCount);
  45. iFrequency = (Frequency.HighPart<<32)+Frequency.LowPart;
  46. iStart = (StartCount.HighPart<<32)+StartCount.LowPart;
  47. iEnd = (ElapsedCount.HighPart<<32)+ElapsedCount.LowPart;
  48. dTime = (double)(iEnd-iStart);
  49. dTime = dTime/iFrequency;
  50. }
  51. else
  52. {
  53. clock_t ClockElapse = clock();
  54. dTime = (double)(ClockElapse - ClockStart);
  55. dTime = dTime/CLOCKS_PER_SEC;
  56. }
  57. return dTime;
  58. }