在OpenGL中处理缓冲区

我正在阅读3.3版核心的OpenGL文档。 我有问题理解适当的缓冲区删除。

自动柜员机我有一个对象,加载到OpenGL内存中的构造,只暴露了属性指针和一个绑定元素数组准备渲染的VAO。 当它停止时,它将删除所有缓冲区并将指针设置为NULL。

我如何正确删除OpenGL数据? 我将假定该对象在渲染时不会停止存在。 我不得不做更多的事情,而不仅仅是删除VAO,然后删除缓冲区对象? 这是否留下任何东西? 我应该绑定VAO禁用属性,取消绑定,然后删除它?

一般来说,在OpenGL中删除一个对象只需要调用一个glDelete*函数,其中*是对象的types。 当被告知删除渲染器仍然可以使用的对象时,OpenGL足够聪明,不会中断或以其他方式崩溃。

如果删除仍附加到另一个对象(VAO中的缓冲区对象或附加到FBO的纹理)的对象,则会延迟实际的删除操作,直到所有附件断开或附加到它们的对象本身都被删除。 所以如果你删除一个VAO使用的缓冲区对象,那么VAO 仍然可以工作 ,保存缓冲区对象的生命周期,直到它不再使用它为止。

所以最终你不必关心。