2015-11-26 56 views
-3

我正在爲簡單的2D遊戲編寫一款遊戲內編輯器,其中網格動態創建和移除的頻率很高。我正在使用libgdx經過一段時間,glGenBuffers非常緩慢

一切正常,除了編輯器變慢。它對輸入事件的反應很晚。

爲了找到我的代碼中的弱點(在所有的atm都沒有優化),我運行了jprofiler並對CPU進行了剖析。事實證明,這個glGenBuffers花了2秒爲14個調用!這是7個網格,每個都有一個頂點和索引緩衝區。其實,我有一個相當快的機器(i7-4790T,GTX980m,16GB ...),所以這不應該成爲這裏的問題。

我只是想知道這是如何可能,因爲我不知道。

jprofiler

+3

您是否刪除了不再使用的緩衝區?只是基於症狀,可能是內存泄漏。你可以看看你的應用程序的整體內存使用情況,看看它是否在增加? –

+3

只是想說緩衝區可能會保存在顯卡的內存中,所以你可能無法看到你的內存使用量增加。否則,您應該通過調用'glDeleteBuffers'來清理緩衝區。 – vesan

回答

0

1兩點意見是正確的。我重建了大部分場景來檢查,如果它仍然存在(通常不是那麼聰明)。如果它仍然存在,重建的部分不會被處置。只更換部件被正確更換。 :/。

我發現這個問題的JProfiler使用和分析存儲,如註釋1

我沒有檢查顯存建議,但沒有別的辦法,即垃圾也在那裏。

0

緩衝區總是存儲在內存中。總是需要清理,幀緩衝區,字節緩衝區等。