diff --git a/SpineViewer/Models/WorkspaceModel.cs b/SpineViewer/Models/WorkspaceModel.cs
index a608cbb..7392d86 100644
--- a/SpineViewer/Models/WorkspaceModel.cs
+++ b/SpineViewer/Models/WorkspaceModel.cs
@@ -34,8 +34,6 @@ namespace SpineViewer.Models
public bool FlipY { get; set; } = true;
- public uint MaxFps { get; set; } = 30;
-
public float Speed { get; set; } = 1f;
public bool ShowAxis { get; set; } = true;
diff --git a/SpineViewer/Resources/Strings/en.xaml b/SpineViewer/Resources/Strings/en.xaml
index e22e54a..d584489 100644
--- a/SpineViewer/Resources/Strings/en.xaml
+++ b/SpineViewer/Resources/Strings/en.xaml
@@ -143,7 +143,7 @@
Window/Fullscreen; F11
- Real-time FPS: {0:F1}
+ Real-time FPS: {0:F1}/{1:F1}
OK
diff --git a/SpineViewer/Resources/Strings/ja.xaml b/SpineViewer/Resources/Strings/ja.xaml
index 0aa2bdb..37fb083 100644
--- a/SpineViewer/Resources/Strings/ja.xaml
+++ b/SpineViewer/Resources/Strings/ja.xaml
@@ -143,7 +143,7 @@
ウィンドウ/フルスクリーン; F11
- リアルタイムFPS:{0:F1}
+ リアルタイムFPS:{0:F1}/{1:F1}
OK
diff --git a/SpineViewer/Resources/Strings/zh.xaml b/SpineViewer/Resources/Strings/zh.xaml
index d17b08f..99c1523 100644
--- a/SpineViewer/Resources/Strings/zh.xaml
+++ b/SpineViewer/Resources/Strings/zh.xaml
@@ -143,7 +143,7 @@
窗口/全屏; F11
- 实时帧率:{0:F1}
+ 实时帧率:{0:F1}/{1:F1}
确认
diff --git a/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs b/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs
index ea396b1..9a5ea91 100644
--- a/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs
+++ b/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs
@@ -175,6 +175,12 @@ namespace SpineViewer.ViewModels.MainWindow
private float _accumFpsTime;
private int _accumFpsCount;
+ public float WallpaperRealTimeFps => _wallpaperRealTimeFps;
+ private float _wallpaperRealTimeFps;
+
+ private int _accumWallpaperFpsCount;
+ private readonly object _accumWallpaperFpsCountLock = new();
+
public float Speed
{
get => _speed;
@@ -516,14 +522,21 @@ namespace SpineViewer.ViewModels.MainWindow
private void UpdateLogicFrame(float delta)
{
// 计算实时帧率, 1 秒刷新一次
- _accumFpsCount++;
_accumFpsTime += delta;
if (_accumFpsTime > 1f)
{
_realTimeFps = _accumFpsCount / _accumFpsTime;
- _accumFpsTime = 0f;
_accumFpsCount = 0;
+
+ lock (_accumWallpaperFpsCountLock)
+ {
+ _wallpaperRealTimeFps = _accumWallpaperFpsCount / _accumFpsTime;
+ _accumWallpaperFpsCount = 0;
+ }
+
+ _accumFpsTime = 0f;
OnPropertyChanged(nameof(RealTimeFps));
+ OnPropertyChanged(nameof(WallpaperRealTimeFps));
}
// 停止更新的时候只是时间不前进, 但是坐标变换还是要更新, 否则无法移动对象
@@ -634,6 +647,9 @@ namespace SpineViewer.ViewModels.MainWindow
// 显示内容
_renderer.Display();
+
+ // 帧数加一
+ _accumFpsCount++;
}
private void WallpaperRenderTask()
@@ -679,6 +695,9 @@ namespace SpineViewer.ViewModels.MainWindow
// 显示渲染
_wallpaperRenderer.Display();
+
+ // 帧数加一
+ lock (_accumWallpaperFpsCountLock) _accumWallpaperFpsCount++;
}
}
catch (Exception ex)
@@ -707,7 +726,6 @@ namespace SpineViewer.ViewModels.MainWindow
Rotation = Rotation,
FlipX = FlipX,
FlipY = FlipY,
- MaxFps = MaxFps,
Speed = Speed,
ShowAxis = ShowAxis,
BackgroundColor = BackgroundColor,
@@ -724,7 +742,6 @@ namespace SpineViewer.ViewModels.MainWindow
Rotation = value.Rotation;
FlipX = value.FlipX;
FlipY = value.FlipY;
- MaxFps = value.MaxFps;
Speed = value.Speed;
ShowAxis = value.ShowAxis;
BackgroundColor = value.BackgroundColor;
diff --git a/SpineViewer/Views/MainWindow.xaml b/SpineViewer/Views/MainWindow.xaml
index 8f277bf..0a2fcfa 100644
--- a/SpineViewer/Views/MainWindow.xaml
+++ b/SpineViewer/Views/MainWindow.xaml
@@ -1052,6 +1052,7 @@
+