2012-04-07 308 views
0

我使用两个使用OpenGL的应用程序使用GQLWidget对此进行了验证。如果screenupdates非常频繁,比如说30 fps,和/或分辨率高,则其中一个核心的CPU使用率会上升。我正在寻找一个解决方案,如何解决这个问题和/或验证它是否也发生在Windows上。使用OpenGL时Qt CPU使用率

+1

什么样的显卡你有多少FPS你获得在其默认的窗口大小运行“glxgears测试”? – timday 2012-04-07 22:58:25

回答

6

以我的经验QGLWidget来绘图本身是围绕GL和你的窗口系统非常有效的瘦包装;如果使用它的CPU使用率很高,很可能使用任何其他实现OpenGL应用程序的方法都会占用较高的CPU使用量。

如果您使用OpenGL有CPU使用率过高,很可能是两种:

  • 你退回到一个软件OpenGL实现(即台面); 例如,如果您没有安装任何图形设备驱动程序,Debian会这样做。
  • 您正在使用旧式即时模式OpenGL:glBegin,... vertices ...,glEnd。改为进入维也纳组织。

你提到的显示分辨率为因素而提出的前一个问题的事实。

1

你需要得到任何探查,分析代码,看看瓶颈。由于你的程序吃了CPU资源(而不是GPU),这应该相当容易。 据我所知,“AQTime 7 Standard”(windows)目前免费提供。或者你可以使用gprof - 取决于你的工具包/平台。

一个非常可能的情况(除了软件的OpenGL后备)是使用动态内存分配过于频繁或运行调试版本。如果每帧有100000多个多边形,立即模式可能会成为问题。

0

我已经看到了在尽量减少主机CPU使用率可怕的几个GL实现。似乎有很多情况下CPU会在GPU等待时等待。通常只需在卡片设置中启用垂直同步就会使应用程序吸取的次数减少,而且仍占用同样多的CPU。 不幸的是,除了限制应用程序的绘制频率之外,您自己几乎无法做这件事。