From e96db328fa163b604edc35f09628536ae6910a9e Mon Sep 17 00:00:00 2001 From: ww-rm Date: Sat, 8 Nov 2025 23:05:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A1=8C=E9=9D=A2=E6=8A=95?= =?UTF-8?q?=E5=BD=B1=E5=B8=A7=E7=8E=87=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/Models/WorkspaceModel.cs | 2 -- SpineViewer/Resources/Strings/en.xaml | 2 +- SpineViewer/Resources/Strings/ja.xaml | 2 +- SpineViewer/Resources/Strings/zh.xaml | 2 +- .../MainWindow/SFMLRendererViewModel.cs | 25 ++++++++++++++++--- SpineViewer/Views/MainWindow.xaml | 1 + 6 files changed, 25 insertions(+), 9 deletions(-) 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 @@ +