2012-04-07 89 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。 不幸的是,除了限制應用程序的繪製頻率之外,您自己幾乎無法做這件事。