我正在尝试显示Viewport3D的FPS。
进行一些搜索,我遇到了CompositionTarget.Rendering,但这似乎给“WPF Performance suite”工具中显示的FPS带来了不同的结果。
当使用CompositionTarget.Rendering时,我得到一个稳定的60 fps,直到我与视口相机交互,(响应鼠标/键盘事件)然后fps拍摄高达150到200 fps,而“WPF”性能套件“工具仍然显示稳定的60 fps。
我认为这是因为“WPF性能套件”工具显示准确的FPS,即每当WPF团队在后备缓冲区上实际调用Present时,而CompositionTarget.Rendering是内部更新的fps,但不代表真实的帧。
我想展示更符合“WPF Performance suite”工具的内容,我该如何实现?
我使用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();
}