我遇到了一个奇怪的崩溃,在尝试绑定 VAO 时随机出现。
VAO 本身之前已由 glGenVertexArrays 生成,它不会返回任何错误。
glGenVertexArrays(NUM_VAO,vao);
glGenBuffers(NUM_VAO,vbo);
glBindVertexArray(vao[2]);
glBindBuffer(GL_ARRAY_BUFFER,vbo[2]);
glBufferData(GL_ARRAY_BUFFER,1024*sizeof(GLfloat),NULL,GL_DYNAMIC_DRAW);
glVertexAttribPointer(...);
glEnableVertexAttribArray(...);
在执行期间,调用:
glBindVertexArray(vao[2])
可能会也可能不会生成 INVALID_OPERATION。请注意,vao[2] 的内容与 glGenVertexArrays 返回的内容相同,并且该数组在执行期间永远不会被删除。
根据规范,只有在传递了一个非零名称并且 glGenVertexArrays 没有返回名称本身时才会发出 INVALID_OPERATION,这显然不是这种情况。
该问题偶尔会出现,大约只有 15% 的应用程序运行时间,否则一切都按预期工作。在调试模式下问题仍然存在。
我刚刚升级了我的工作站,我曾经在 OpenSUSE 12.1 上使用 NVidia 驱动程序 290.10 和 Qt 4.7.1 进行开发,但从未遇到过这个问题。
我刚刚使用 NVidia 驱动程序 304.43 和 Qt 4.8.1 迁移到 OpenSUSE 12.2,我遇到了这个问题。
以前有人遇到过这种情况吗?我错过了什么吗?