首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当取消VAO时,是否也应该解除相关的VBO的绑定?

问当取消VAO时,是否也应该解除相关的VBO的绑定?
EN

Computer Graphics用户
提问于 2020-07-16 01:22:36
回答 1查看 715关注 0票数 1

我正在使用一个js/wasm/c++程序,它在更新OpenGL状态时使用面向对象的编程。对于VBO(顶点缓冲区)和VAOs (顶点数组)有相应的c++类。当我们调用vao.unbind();时,它只是简单地调用glBindVertexArray(0);。我看到,未绑定的VAO并没有解除相应的VBO。VAO的一个VAO仍然是ARRAY_BUFFER_BINDING的目标。

我的问题是:当您取消设置VAO时,自动取消相关的VAO是否是最佳实践?或者我应该编写一个单独的函数来取消VAO的VBO?

在WebGL中,我看到当您解除VAO时,它不会解除VBO的绑定,尽管这个编辑职位是这么说的。

EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2020-07-16 11:38:58

不,您不需要解除VBO的绑定。VBO的只在VAO被绑定时添加到VAO的状态中。因此,任何先前绑定的VBO都不会改变您要绑定的VAO的状态。可以通过以下调用更改绑定VAO的状态:

  • glEnableVertexAttribArray
  • glDisableVertexAttribArray
  • glVertexAttribPointer
  • glBindBuffer(GL_ELEMENT_ARRAY_BUFFER)

您可以在没有当前绑定的VAO的情况下绑定和取消绑定VBO,甚至可以在VAO之间共享它们。VBO只是一个指向数据容器的指针,可以用于多种用途。

票数 2
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/10029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档