4

我正在尝试显示 Viewport3D 的 FPS。

进行一些搜索时,我遇到了 CompositionTarget.Rendering,但这似乎给“WPF 性能套件”工具中显示的 FPS 提供了不同的结果。

使用 CompositionTarget.Rendering 时,我得到稳定的 60 fps 显示,直到我与视口相机交互(响应鼠标/键盘事件)然后 fps 拍摄到 150 到 200 fps 之间,而“WPF 性能套件”工具仍显示稳定的 60 fps。

我认为这是因为“WPF 性能套件”工具显示了准确的 FPS,即每当 WPF 团队实际在后台缓冲区上调用 Present 时,而 CompositionTarget.Rendering 是内部更新的 fps,但不代表真正的 fps。

我想展示一些更符合“WPF 性能套件”工具的东西,我该如何实现呢?

我使用 CompositionTarget.Rendering 如下 -

Viewport3D()
{
    CompositionTarget.Rendering += (s, a) =>
                {
                    ++m_frames;
                };

            DispatcherTimer fpsTimer = new DispatcherTimer();
            fpsTimer.Interval = TimeSpan.FromSeconds(1);
            fpsTimer.Tick += (s, a) =>
                {
                    m_fpsText.Text = string.Format("FPS:{0}", m_frames);
                    m_frames = 0;
                };
            fpsTimer.Start();
    }
4

0 回答 0