作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
VAO 是顶点数组对象,VBO 是顶点缓冲区对象。创建和绑定(bind)/解除绑定(bind) VAO 和 VBO 的调用具有如下一般格式:
GLuint VAO, VBO;
glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER,
sizeof(GLfloat)* 9,
vertices,
GL_STATIC_DRAW);
glVertexAttribPointer(0,
3, GL_FLOAT, GL_FALSE,
0, 0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
最佳答案
how does a VBO get attached to a VAO
glVertexAttribPointer
叫做。
glVertexAttribPointer
时存储。叫做。
ARRAY_BUFFER
与属性相关联,并且对象的名称(值)存储在 VAO 的状态向量中。
ARRAY_BUFFER
binding 是一个全局状态。
ELEMENT_ARRAY_BUFFER
)。索引缓冲区绑定(bind)在顶点数组对象中声明。当缓冲区绑定(bind)到目标时
ELEMENT_ARRAY_BUFFER
,则此缓冲区与当前绑定(bind)的顶点数组对象相关联。
glBindBuffer(GL_ARRAY_BUFFER, VBO);
时,然后设置存储
VBO
的全局状态.
glVertexAttribPointer
检索
VBO
从全局状态并将其关联到
VAO
.
glBindBuffer(GL_ARRAY_BUFFER, ...)
再次调用,那么之前的绑定(bind)就丢失了,当然它不会改变 VAO 的任何状态。
glBindVertexArray(VAO); # bind VAO (global state)
glBindBuffer(GL_ARRAY_BUFFER, VBO1); # bind VBO1 (global state)
glVertexAttribPointer(0, ...); # associate VBO1 to attribute 0 in VAO
glBindBuffer(GL_ARRAY_BUFFER, VBO2); # bind VBO2 (change global state, VBO1 binding is lost)
glVertexAttribPointer(1, ...); # associate VBO2 to attribute 1 in VAO
关于opengl - VBO 如何连接到 VAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59892088/
我是一名优秀的程序员,十分优秀!