2010-06-29 94 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