[xna]帧数
游戏帧数,也就是游戏帧循环一次说需时间。这是个非线性值,故采用平均帧数作为游戏帧数。
具体代码如下:
具体代码如下:
1
//------------------------------------------------------------------
2
using System;
3
using System.IO;
4
//------------------------------------------------------------------
5
namespace 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
//------------------------------------------------------------------
//------------------------------------------------------------------2
using System;3
using System.IO;4
//------------------------------------------------------------------5
namespace Dxfcv222.Xna6
{7
/// <summary>8
/// fps9
/// </summary>10
public static class Fps11
{12
private static double now;13
private static int counter;14
private static double totalSeconds;15

16
/// <summary>17
/// 当前fps18
/// </summary>19
public static double Now20
{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
else45
{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
//------------------------------------------------------------------


浙公网安备 33010602011771号