我有一個分配〜300個VBO的應用程序。但是,每幀只能使用其中的40個繪製命令。我已經用OpenGL分析器驗證了這一點。爲什麼分配大量的VBO會導致性能問題?
我注意到,如果我減少駐國際中心組織的數量,性能大爲改善。但是,鑑於大多數維也納國際組織大多數時間都沒有使用,我很驚訝這是一個問題。我假設大多數VBO沒有分配給它們的內存,因爲我甚至沒有在未使用的VBO上調用glBufferData。
有誰知道爲什麼有額外的未使用的維也納組織會造成性能的下降?我猜這可能是依賴於驅動程序(我有一個Nvidia 460GTX)。
而且,我會想知道如何使一束粒子系統的結合(其中大部分是任何給定的框架中使用)到一個單一的VBO,這樣我就不會遇到這個問題。
編輯:事實證明,性能問題與維也納各組織不相關。不過,我在調查過程中瞭解了很多關於將數據流入維也納國際中心的情況這篇文章非常有趣:http://onrendering.blogspot.com/2011/10/buffer-object-streaming-in-opengl.html。
驅動程序可能仍保留可能的東西他們。 –
@耶穌是的,我很確定這是一個驅動程序問題。無論如何,使用300個VBO都是頭疼的問題,所以我會考慮另一種方案。 –
如果您只使用大約40次繪製調用,則您可能只需重新使用一些VBO。 –