【问题标题】:Qt CPU usage while using OpenGL使用 OpenGL 时的 Qt CPU 使用率
【发布时间】:2012-04-07 22:10:54
【问题描述】:

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

【问题讨论】:

  • 你有什么类型的显卡,在默认窗口大小下运行“glxgears”可以获得多少 FPS?

标签: c++ qt opengl cpu-usage


【解决方案1】:

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

如果您使用 OpenGL 时 CPU 使用率较高,则可能是:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        • 2014-06-26
        相关资源
        最近更新 更多