VBO绑定的OpenGL顺序

Posted

技术标签:

【中文标题】VBO绑定的OpenGL顺序【英文标题】:OpenGL Order of VBO binding 【发布时间】:2014-03-20 18:09:03 【问题描述】:

如果我正在尝试做一些 OpenGL 3.3+ 风格的 VBO 图形,我可以先启用属性数组并设置顶点属性指针,然后在经常刷新的 VBO 中,加载新数据并绑定 GL_ARRAY_BUFFER 和GL_ELEMENT_ARRAY_BUFFER 然后调用drawELements?我的代码在 drawElements 上崩溃了,我想知道是不是因为我的调用顺序搞砸了。我还要提到这是在 Qt 5 的幌子下。

【问题讨论】:

你能在drawElements中显示导致问题的代码吗?还有什么错误。 【参考方案1】:

当您设置属性指针时,正确绑定GL_ARRAY_BUFFER 至关重要。当前GL_ARRAY_BUFFER_BINDING glVertexAttribPointer() 调用时 将成为该属性指针状态的一部分。在绘制时绑定哪个GL_ARRAY_BUFFER 并不重要(与与glDrawElements() 系列GL 函数相关的GL_ELEMENT_ARRAY_BUFFER 不同。

【讨论】:

我认为它们是分开的,您可以在其中确定 VertexAttributePointers,它们会以某种方式保持不变。谢谢!

以上是关于VBO绑定的OpenGL顺序的主要内容,如果未能解决你的问题,请参考以下文章

VBO/FBO/DisplayLists 如何在 Haskell 的 OpenGL 绑定中工作?

OpenGL VBO 绘制顺序

OpenGL - 错误地创建多个 VBO

OpenGL:VAO/VBO 混淆

在 OpenGL ES 中,多个程序可以使用相同的 VBO 并绑定到它们的属性吗?

OpenGL ES:一个 VBO 中的多个网格