我在顶点缓冲区对象(VBO)中遇到了一个奇怪的问题。我创建了一个包含 VBO 创建和删除的类。我删除了类的析构函数中的所有 VBO(使用 glDeleteBuffers())。
现在我创建了 2 个 OpenGL 上下文窗口,每个窗口都使用 VBO 类运行。现在,当我关闭一个 GLwindow 时,它的析构函数调用和 VBO 也被删除,但奇怪的是这种析构函数对第二个窗口的影响,在第二个窗口上运行的对象消失了。当我使用已弃用的 glVertex3fv 进行渲染时,我可以看到对象,但不能使用 VBO。如果我不使用 GLwindow 类的析构函数删除 VBO,则一切正常。我不应该在每次删除上下文时删除 VBO 吗?
我的问题是为什么会这样?我知道 OpenGL 是一个状态机,但我们不能创建一个全新的独立类对象吗?
我注意到与 (glDeleteTextures()) 相同的效果如果我不使用析构函数删除纹理,不会发生任何奇怪的事情,但是如果我删除一个 Glwindows 纹理,它会影响第二个 Glwindow 渲染并且纹理会消失。
这是已知问题还是仅发生在我身上?