OpenGL渲染循环 - 帧速率/ FPS太低

时间:2015-10-09 16:36:01

标签: wpf opengl oculus

我有一个带有openGL视图的窗口。 我的窗口是WPF;它包含一个包含opengl上下文的UserControl。

如果我连续调用我的渲染函数(OnPaint()在末尾调用Refresh()),则帧速率为75 fps:这是我的目标。 问题是其他事件(鼠标事件等)没有足够的时间。 该应用程序不会冻结,但它无法使用。

我在UserControl中添加了一个System :: Timers :: Timer。它以30 fps调用Refresh()。 我尝试在WPF中使用CompositionTarget.Rendering事件:它以30 fps调用UserControl.Invalidate()。

使用这些计时器,应用程序可以正常运行所有事件。 但是他们没有足够快地调用我的渲染功能。

有没有办法更频繁地调用我的渲染函数?

1 个答案:

答案 0 :(得分:1)

我认为System.Timers.Timer在这种情况下可能不合适。切换到System.Threading.DispatcherTimer并给它一个高优先级。 MSDN details here

DispatcherTimer还将确保呼叫来自同一个线程。

从上面的MSDN链接:

  

如果在WPF应用程序中使用System.Timers.Timer,则值得   注意到System.Timers.Timer在不同的线程上运行   用户界面(UI)线程。

     

使用DispatcherTimer的原因与   System.Timers.Timer是DispatcherTimer在同一个上运行的   线程作为Dispatcher和DispatcherPriority可以在上面设置   DispatcherTimer。

相关问题