增加桌面投影帧率显示

This commit is contained in:
ww-rm
2025-11-08 23:05:08 +08:00
parent 874404e3d3
commit e96db328fa
6 changed files with 25 additions and 9 deletions

View File

@@ -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;

View File

@@ -143,7 +143,7 @@
<s:String x:Key="Str_FullScreenTooltip">Window/Fullscreen; F11</s:String>
<!-- 日志框下方附加信息 -->
<s:String x:Key="Str_RealTimeFps">Real-time FPS: {0:F1}</s:String>
<s:String x:Key="Str_RealTimeFps">Real-time FPS: {0:F1}/{1:F1}</s:String>
<!-- 弹窗文本 -->
<s:String x:Key="Str_OK">OK</s:String>

View File

@@ -143,7 +143,7 @@
<s:String x:Key="Str_FullScreenTooltip">ウィンドウ/フルスクリーン; F11</s:String>
<!-- 日志框下方附加信息 -->
<s:String x:Key="Str_RealTimeFps">リアルタイムFPS{0:F1}</s:String>
<s:String x:Key="Str_RealTimeFps">リアルタイムFPS{0:F1}/{1:F1}</s:String>
<!-- 弹窗文本 -->
<s:String x:Key="Str_OK">OK</s:String>

View File

@@ -143,7 +143,7 @@
<s:String x:Key="Str_FullScreenTooltip">窗口/全屏; F11</s:String>
<!-- 日志框下方附加信息 -->
<s:String x:Key="Str_RealTimeFps">实时帧率:{0:F1}</s:String>
<s:String x:Key="Str_RealTimeFps">实时帧率:{0:F1}/{1:F1}</s:String>
<!-- 弹窗文本 -->
<s:String x:Key="Str_OK">确认</s:String>

View File

@@ -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;

View File

@@ -1052,6 +1052,7 @@
<TextBlock.Text>
<MultiBinding Converter="{StaticResource StrFmtCvter}" ConverterParameter="Str_RealTimeFps">
<Binding Path="RealTimeFps"/>
<Binding Path="WallpaperRealTimeFps"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>