You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知Vertex Array ID,如何获取其绑定的Vertex Buffer ID?

从VAO获取绑定的VBO/EBO ID

当然可以从Vertex Array Object(VAO)中获取其绑定的Vertex Buffer Object(VBO)或Element Buffer Object(EBO)ID,但需要针对具体的绑定项查询,无法一次性获取VAO绑定的所有缓冲区:

1. 查询顶点属性对应的VBO

VAO会记录每个顶点属性绑定的VBO,你需要通过glGetVertexAttribiv函数查询指定属性索引对应的缓冲区:

// 先绑定目标VAO
glBindVertexArray(yourVAOId);

// 示例:查询索引为0的顶点属性绑定的VBO
GLint vboId;
glGetVertexAttribiv(0, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, &vboId);

这里的0是你要查询的顶点属性索引(比如对应顶点位置、纹理坐标等属性的索引,取决于你之前的顶点属性配置)。

2. 查询EBO(元素缓冲区)

VAO同样会保存元素缓冲区的绑定状态,绑定VAO后用glGetIntegerv查询GL_ELEMENT_ARRAY_BUFFER_BINDING即可:

glBindVertexArray(yourVAOId);

GLint eboId;
glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &eboId);

注意事项

  • 直接用glGetIntegerv(GL_ARRAY_BUFFER_BINDING, ...)得到的是当前上下文全局绑定的VBO,不是VAO中保存的属性绑定VBO,必须先绑定VAO再针对具体属性查询。
  • 如果某个顶点属性未绑定VBO,查询得到的vboId会是0。

内容的提问来源于stack exchange,提问作者Moosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:10:27