我正在使用C ++和GLES 2工作移动渲染库。在我的示例项目中,这是一个基本的演示应用程序(适用于Android和iOS),我渲染一个地图。由于地图的移动,缩放等,几何图形必须发生巨大变化。这必须尽快发生。
该库正在使用共享的GL上下文。主要直接在屏幕上绘制一些简单的纹理四边形。另一个绑定到后台工作线程,并将复杂的几何绘制到这些纹理。它还处理所有网格删除操作。
Mesh 类包含VBO和IBO缓冲区。它有绘图的逻辑。当要丢弃网格时,有两次调用glDeleteBuffers来删除vbo和ibo缓冲区。
void Mesh::free()
{
if (vbo_ != 0)
glDeleteBuffers(1, &vbo_);
if (ibo_ != 0)
glDeleteBuffers(1, &ibo_);
}
我的问题只发生在iOS上,CPU在这两次调用上花了很长时间。 CPU使用率达到100%,我可以看到内存使用率非常缓慢下降。我无法分辨出原因是什么。 在Android上同样的场景是顺畅的,我不必等待几秒钟。这对我来说是个大问题,因为图书馆的目标是在普通电话上达到至少30 fps。