Ios OpenGLES上的顶点数组对象(VAO)在构建后几乎立即神秘地变得无效

Ios OpenGLES上的顶点数组对象(VAO)在构建后几乎立即神秘地变得无效,ios,opengl-es,opengl-es-2.0,vertex-array,Ios,Opengl Es,Opengl Es 2.0,Vertex Array,我在iOS上有一个非常奇怪的VAO问题 问题在于,新创建的VAO几乎在创建后立即失效 我有一段代码,它使用glGenVertexArrayOES(1,&VAO)以通常的方式创建VAO。然后绑定它(glBindVertexArrayOES),设置所有顶点绑定等,然后绑定zero VAO以确保不再有glBind调用意外写入它。如果此时调用glIsVertexArrayOES(vao),它将返回true 我的代码是以作业图的形式构建的,作业被推送到一个有序的队列中,并被挑选出来在线程池中执行。然而,对

我在iOS上有一个非常奇怪的VAO问题

问题在于,新创建的VAO几乎在创建后立即失效

我有一段代码,它使用glGenVertexArrayOES(1,&VAO)以通常的方式创建VAO。然后绑定它(glBindVertexArrayOES),设置所有顶点绑定等,然后绑定zero VAO以确保不再有glBind调用意外写入它。如果此时调用glIsVertexArrayOES(vao),它将返回true

我的代码是以作业图的形式构建的,作业被推送到一个有序的队列中,并被挑选出来在线程池中执行。然而,对于OpenGL,我只在一个线程上执行调用GL的代码。我有线程亲缘关系来确保这一点

现在。我的代码执行、生成VAO并退出函数。然后它拿起下一个作业,在同一个线程上运行,并尝试使用新创建的VAO。如果我在这一点上调用glIsVertexArrayOES(字面意思,几乎在构建之后立即调用),它将返回false

任何忽略它并使用它的尝试都失败了

我在glDeleteVertexArraysOES上有一个断点,但没有调用它。真奇怪。。。它成功生成VAO,退出函数,尝试在同一线程上使用新创建的VAO(从而避开上下文和共享组问题),但失败


非常感谢任何帮助或见解

这可能是件小事。然而,如果没有一个最小的测试用例(这里有代码)来显示问题,那么就没有什么可看的了。。如果不愿意配对一个测试用例,那么在代码审查站点上抛出所有代码后,您可能仍然能够得到有用的响应。我试图在各种样本中复制这个问题,但没有成功。我希望有人能够深入了解VAO代码的内部结构,了解GlisvertexArrayos可能会做些什么,这有助于提供解决方案。删除所有不相关的内容。然后继续配对代码,直到问题被隔离。好的……GLKView bindDrawable似乎是罪魁祸首。