c++ - 将顶点缓冲区对象附加到顶点数组对象

标签 c++ opengl vbo vao

我正在尝试将 vbo 附加到 vao。但是我只让它以“旧”方式工作:

bind vao
bind vbo
glVertexAttribPointer(...)
glEnableVertexArrayAttrib(...)
unbind vbo
unbind vao

现在我想让它实现新的无绑定(bind)方式,我这样试过:

glVertexArrayAttribFormat(...);
glVertexArrayVertexBuffer(...);
glVertexArrayAttribBinding(...);

但是我只得到一个黑屏。

虽然将索引缓冲区对象附加到 vao 仍然有效:

glVertexArrayElementBuffer(...);

我错过了什么?

最佳答案

我好像不见了

glEnableVertexArrayAttrib(...)

因此,正确的替换应该是

glEnableVertexArrayAttrib(...);
glVertexArrayVertexBuffer(...);
glVertexArrayAttribFormat(...);
glVertexArrayAttribBinding(...);

并且不要忘记在 glVertexArrayVertexBuffer(...) 中设置步幅,它不应该为 0!

关于c++ - 将顶点缓冲区对象附加到顶点数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25411599/

相关文章:

c++ - 如何检查cin中是否有任何东西[C++]

c++ - 如何从文件中读取字符和整数?

c++ - QItemSelectionModel::selectedIndexes() 崩溃

opengl - glGetString 和 glGetShaderInfoLog 等函数使用什么编码

c++ - 在 OpenGL 中使用 vbo 绘制圆柱体

c++ - 提高 OpenGL 中的 VBO 性能

c++ - 列出 C++ 如何编辑特定元素

C++ 将一个字符传递给 glShaderSource

c++ - 使用 STBI_Image OpenGL 加载图像时在 0x69ABF340 抛出异常

c++ - 使用顶点缓冲对象 (VBO) 渲染 Kinect 点云