OpenGLES上的顶点阵列对象(VAO)几乎在施工后立即神秘地变得无效

时间:2013-03-14 20:15:06

标签: ios opengl-es opengl-es-2.0 vertex-array

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

问题是新创建的VAO几乎在创建后立即失效。

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

我的代码被构造为一个作业图,其中作业被推送到有序队列并被拾取以在线程池上执行。然而,对于OpenGL,我只执行在一个线程上调用GL的代码。我有线程亲和力来确保这一点。

现在。我的代码执行,生成VAO,退出函数。然后它接收下一个作业,在同一个线程上运行它,并尝试使用新创建的VAO。如果我在这一点上调用glIsVertexArrayOES - 几乎在构造之后立即调用它 - 它返回false!

任何忽略它并试图使用它的尝试都会失败。

我在glDeleteVertexArraysOES上有一个断点,而且没有被调用。这很奇怪......它成功地制作了一个VAO,退出一个函数,试图在同一个线程上使用新创建的VAO(从而避开上下文和共享组问题)并失败。

非常感谢任何帮助或见解!

0 个答案:

没有答案