我的渲染周期如下所示:import model - >画它(一些帧......) - >删除它。要绘制模型我正在使用vao / vbo / ebo。
现在,在使用此代码的删除阶段:
glDeleteVertexArrays(1, &vao);
glDeleteBuffers(1, &vbo);
glDeleteBuffers(1, &ebo);
在Xcode Allocation工具中进行分析时,我得到了这个
如果代码写得像:
glDeleteBuffers(1, &vbo);
glDeleteBuffers(1, &ebo);
glDeleteVertexArrays(1, &vao);
突然显示:
为什么会这样?我只改变了glDeleteVAO
/ glDeleteBuffers
的顺序并且让这个奇怪的'内存泄漏'。所有这三行代码都放在了dctor中,而不是分布在应用程序中。
此外,删除vbo之后的glIsBuffer()
,vao,ebo在所有缓冲区中的所有这些情况下都返回0。
在os x el capitan上使用opengl 4.1