Ipad OpengGL ES顶点缓冲区

Ipad OpengGL ES顶点缓冲区,ipad,opengl-es,Ipad,Opengl Es,我在iPad上使用OpenGL中的顶点缓冲区时遇到了这种情况: -以30 FPS的速度渲染某些对象 -删除对象并创建新对象(杀死所有实体并繁殖其他实体) -渲染新对象 FPS下降到10秒,然后慢慢恢复到30秒。我使用了一些计时器,我看到渲染时间在几秒钟内从30毫秒增加到100毫秒。仅当加载新对象(一帧)且“发送到渲染”时间不变时,更新时间才会增加。我认为问题在于顶点缓冲缓存。有没有一种方法可以强制缓存而不是等待OpenGL这样做?您对这个问题还有其他看法吗?另一个可能的选择是不销毁对象并重新创建

我在iPad上使用OpenGL中的顶点缓冲区时遇到了这种情况: -以30 FPS的速度渲染某些对象 -删除对象并创建新对象(杀死所有实体并繁殖其他实体) -渲染新对象


FPS下降到10秒,然后慢慢恢复到30秒。我使用了一些计时器,我看到渲染时间在几秒钟内从30毫秒增加到100毫秒。仅当加载新对象(一帧)且“发送到渲染”时间不变时,更新时间才会增加。我认为问题在于顶点缓冲缓存。有没有一种方法可以强制缓存而不是等待OpenGL这样做?您对这个问题还有其他看法吗?

另一个可能的选择是不销毁对象并重新创建它们,而是使用
glBufferSubData()
更新其中的数据

这可能仍然无法解决缓存问题,因为您仍在将新数据放入缓冲区,但我认为这肯定比销毁和重新创建缓冲区要快


有了此更改,您可以尝试的另一件事是使用
glBufferData()
usage
参数,并将其更改为
GL\u DYNAMIC\u DRAW
GL\u STREAM\u DRAW
。这些都应该给OpenGL一个提示,即缓冲区正在频繁更改,这可能会促使OpenGL适当地优化缓存。

有人知道PowerVR SXG 535上VBO的内存限制吗?在删除旧的VBO之前创建新的VBO也可能会出现视频内存不足的问题。这是首选方法,在渲染过程中销毁和创建VBO不是一个好做法。