2010-06-29 92 views
1

我在iPad上使用頂點緩衝區在OpenGL休耕情況: - 渲染某些對象有30 FPS - 刪除對象,並創建新的(殺死所有實體和產卵等) - 呈現新物體OpengGL ES頂點緩衝

FPS下降到10幾秒鐘,然後慢慢恢復到30.我使用了一些定時器,我看到渲染時間從30ms增加到100ms幾秒鐘。更新時間僅在加載新對象(一個幀)和發送渲染時間不變時纔會增加。我認爲問題是頂點緩衝區緩存。有沒有辦法強制緩存,而不是等OpenGL去做?你對這個問題有其他意見嗎?

+0

有誰知道PowerVR SXG 535上的VBO的內存限制嗎?在刪除舊的VBO之前,它也可能不存在視頻內存問題 – Felics 2010-06-29 09:38:42

回答

2

另一種可能的選擇是不銷燬對象並重新創建它們,而是使用glBufferSubData()來更新它們中的數據。

這可能仍然不能解決緩存問題,因爲您仍然在緩衝區中放入新數據,但我認爲這會比銷燬和重新創建緩衝區更快。

隨着這種變化,你可以嘗試的另一件事是玩glBufferData()usage參數並將其更改爲GL_DYNAMIC_DRAWGL_STREAM_DRAW。這些應該會給OpenGL一個暗示緩衝區經常變化的暗示,也許這會促使它適當地優化緩存。

+0

這是首選的方法,在渲染期間銷燬並創建VBO並不是一種好的做法。 – 2010-06-29 16:12:27