2010-06-28 47 views
2

我的應用程序呈現大約100個顯示列表/秒。雖然我確實認爲這對GPU來說是密集型的,但我不明白爲什麼它會使我的CPU達到80-90%。沒有顯示存儲在圖形卡中的列表,而不是存儲在系統內存中?我需要做些什麼來減少這種瘋狂的CPU使用率?我的對象永遠不會改變,所以這就是爲什麼我使用DL而不是VBO。但我真正主要關心的是CPU使用情況以及我如何減少它。我正在渲染~60(或試圖)每秒幀數。顯示列表應該是cpu密集型的嗎?

感謝

回答

1

如果你指的是these,那麼我懷疑的瓶頸將是CPU相關。所有這些文件的解碼都是在CPU上完成的。當然,每個單獨的命令都可能會導致您的圖形卡發出幾條命令,這些命令會很快執行,但是CPU在執行解碼任務時會卡住。

+0

我在引用GlCallList() – jmasterx 2010-06-28 03:06:48

+0

@user:如果是這種情況,那麼函數的CPU/GPU邊界是圖形供應商特定的。微軟的默認驅動程序不提供OpenGL的硬件加速。我懷疑你的圖形適配器不提供這樣的加速 - 大多數消費者圖形卡廠商忽視了OpenGL,因爲遊戲並不經常使用它。 (他們使用Direct3D代替) – 2010-06-28 03:12:53

+0

我有一個Nvidia 9600 GT,它支持OpenGL 3.0,我向你保證它確實是硬件加速的 – jmasterx 2010-06-28 03:14:43

0

您可能禁用了VSYNC。在這種情況下,你的CPU將會產生儘可能多的每秒幀數。當然,其中大多數會浪費,因爲您的顯示器無法每秒更新100次。

啓用VSYNC並再次檢查您的CPU使用率(和幀速率)。

+0

試過了,沒有效果:-( – jmasterx 2010-06-28 03:36:16

0

雖然顯示列表是在GPU上編譯的,但並不意味着cpu上不需要一些工作(如果不是直接在您的代碼中,則可能在驅動程序中)來實際指定顯示列表來調用GPU。

如果你想知道cpu的使用時間,可以抓一個分析器並啓動一個調用圖抽樣測試。你會很快發現CPU的耗費時間。

相關問題