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