在释放IBO和VAO时EXC_BAD_ACCESS

时间:2014-01-26 13:06:14

标签: ios opengl-es exc-bad-access vao

我在iOS上制作了一个小游戏,只要加载新模型,就会在舞台上创建VBO,IBO和VAO。当不再需要该模型时,将释放这些缓冲区。

缓冲区创建和销毁总是在渲染循环开始时完成(我有一个单独的线程,在游戏循环中跳帧)。

我以前只使用VBO和VAO,之前从未崩溃,但是当我添加索引缓冲区对象IBO时,我突然开始遇到这些崩溃。

如果我没有释放缓冲区,它不会崩溃,所以我猜模型仍在渲染并擦除缓冲区使其崩溃?但是如果我有一个单独的线程怎么可能呢?顺便说一下,我不会删除数据。所有顶点和索引都是静态的。

这是释放缓冲区的代码,当没有特定模型的引用时调用缓冲区:

void ResourceModel::DeleteBuffers(uint16_t modelId)
{
    glDeleteBuffers(1, &m_buffer[modelId]);
    glDeleteBuffers(1, &m_bufferIBO[modelId]);
    glDeleteVertexArraysOES(1, &m_geomVAOs[modelId]);
    glDeleteVertexArraysOES(1, &m_primVAOs[modelId]);
}

0 个答案:

没有答案