[xna]帧数

   游戏帧数,也就是游戏帧循环一次说需时间。这是个非线性值,故采用平均帧数作为游戏帧数。
   具体代码如下:
   
 1//------------------------------------------------------------------
 2using System;
 3using System.IO;
 4//------------------------------------------------------------------
 5namespace Dxfcv222.Xna
 6{
 7    /// <summary>
 8    /// fps
 9    /// </summary>

10    public static class Fps
11    {
12        private static double now;
13        private static int counter;
14        private static double totalSeconds;
15
16        /// <summary>
17        /// 当前fps
18        /// </summary>

19        public static double Now
20        {
21            get return now; }
22        }

23        /// <summary>
24        /// 
25        /// </summary>

26        public static void Initialize() { }
27        static Fps()
28        {
29        }

30        /// <summary>
31        /// 更新
32        /// </summary>
33        /// <param name="elapsedTime"></param>

34        public static void Update(double elapsedTime)
35        {
36            Updating(ref elapsedTime);
37
38            double thisFrameTotalSeconds = totalSeconds + elapsedTime;
39            if (thisFrameTotalSeconds < 1.0f)
40            {
41                ++counter;
42                totalSeconds = thisFrameTotalSeconds;
43            }

44            else
45            {
46                double thisFrameRemainSeconds = thisFrameTotalSeconds - 1.0f;
47                now = counter;
48                if (thisFrameRemainSeconds * 4 < elapsedTime)
49                {
50                    ++now;
51                }

52                counter = 0;
53                totalSeconds = thisFrameRemainSeconds;
54            }

55        }

56        /// <summary>
57        /// 
58        /// </summary>
59        /// <param name="elapsedTime"></param>

60        public static void Updating(ref double elapsedTime)
61        {
62            if (now == 0)
63            {
64                if (elapsedTime > 0.0001)
65                {
66                    now = 1.0f / elapsedTime;
67                }

68            }

69        }

70        /// <summary>
71        /// 重置
72        /// </summary>

73        public static void Reset()
74        {
75            now = 0;
76            counter = 0;
77            totalSeconds = 0;
78        }

79    }

80}
   
81//------------------------------------------------------------------

posted on 2006-10-24 15:14  小峰  阅读(284)  评论(0)    收藏  举报

导航