0

我通过使用 GQLWidget 的两个使用 OpenGL 的应用程序验证了这一点。如果屏幕更新非常频繁,比如 30 fps,和/或分辨率很高,则其中一个内核的 CPU 使用率会飙升。我正在寻找有关如何解决此问题和/或验证它是否也发生在 Windows 上的解决方案。

4

3 回答 3

6

根据我的经验,QGLWidget 本身是一个非常有效的 GL 和窗口系统的瘦包装器;如果您使用它的 CPU 使用率很高,那么您很可能使用任何其他实现 OpenGL 应用程序的方式也有很高的 CPU 使用率。

如果您使用 OpenGL 的 CPU 使用率很高,则可能是:

  • 您正在依赖软件 OpenGL 实现(即 Mesa);例如,如果您不安装任何图形设备驱动程序,Debian 会这样做。
  • 您正在使用老式即时模式 OpenGL:glBegin,...vertices...,glEnd。改为进入 VBO。

您提到显示分辨率作为一个因素的事实表明了前一个问题。

于 2012-04-07T22:54:37.590 回答
1

您需要获取任何分析器,分析您的代码并查看瓶颈在哪里。由于您的程序会占用 CPU 资源(而不是 GPU),因此这应该相当容易。据我所知,“AQTime 7 Standard”(windows)目前是免费提供的。或者您可以使用 gprof - 取决于您的工具包/平台。

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

于 2012-04-08T03:12:20.163 回答
0

我见过一些 GL 实现在最小化主机 CPU 使用率方面很糟糕。在很多情况下,CPU 会在 GPU 绘制时忙于等待。通常,只需在卡片设置中打开垂直同步,您的应用就会减少绘制频率,但仍会占用同样多的 CPU。不幸的是,您自己对此无能为力,除了限制您的应用程序绘制的频率。

于 2012-04-08T14:17:39.840 回答