gpt4 book ai didi

opengl - 在调用 glDeleteBuffers 之前是否应该解除 VBO 绑定(bind)?

转载 作者:行者123 更新时间:2023-12-04 17:48:47 24 4
gpt4 key购买 nike

是否需要在删除缓冲区对象之前取消绑定(bind)它?如果我在 VAO 中绑定(bind)它并删除它而不解除绑定(bind)(绑定(bind)到 0),会发生什么?引用还会存在吗?

public void dispose()
{
glBindVertexArray(0);
glDeleteVertexArrays(vaoID);

glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(vboVertID);
glDeleteBuffers(vboColID);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDeleteBuffers(eboID);
}

在删除之前取消绑定(bind)是好还是坏?

最佳答案

官方文档 (https://www.opengl.org/sdk/docs/man/html/glDeleteBuffers.xhtml) 说:

glDeleteBuffers 删除由数组缓冲区元素命名的 n 个缓冲区对象。缓冲区对象被删除后,它没有内容,并且它的名称可以免费重用(例如通过 glGenBuffers)。 如果当前绑定(bind)的缓冲区对象被删除,则绑定(bind)恢复为 0(没有任何缓冲区对象)。

至于 VAO - https://www.opengl.org/registry/specs/ARB/vertex_array_object.txt

(2) What happens when a buffer object that is attached to a non-current
VAO is deleted?

RESOLUTION: Nothing (though a reference count may be decremented).
A buffer object that is deleted while attached to a non-current VAO
is treated just like a buffer object bound to another context (or to
a current VAO in another context).

关于opengl - 在调用 glDeleteBuffers 之前是否应该解除 VBO 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23564945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com