glVertexPointer无效操作

时间:2011-10-08 18:06:04

标签: c++ opengl

我对OpenGL有一个相当奇怪的问题。当我尝试使用glVertexPointer没有绑定到GL_ARRAY_BUFFER的缓冲区并使用顶点数组对象(VAO)时,它会生成无效的操作错误。 glVertexPointer的文档中没有此错误。

当我生成缓冲区并将其绑定到GL_ARRAY_BUFFER时,错误消失,但是当我将数据存储在RAM中时,我绑定0并使用指向RAM的指针。另外,通过不绑定VAO我不会再出现错误,但我注意到,当我不使用它时,程序中的其他东西会被破坏。

也许我错过了设置指针的地方,而VAO被绑定而缓冲区没有,将无效的无效操作?从理论上讲,我可以将这些数据移到维也纳国际组织,不要打扰,但我想知道为什么会这样。

1 个答案:

答案 0 :(得分:2)

ARB_vertex_array_object的扩展注册表明确指出,它们不能与客户端阵列一起使用。对于支持VAO的核心OpenGL版本,这应该是不同的,并且由于VAO是服务器状态的事实。因此,获得无效操作错误是完全预期的行为。只需将所有内容存储在VBO中(如果数据经常更改,可以使用GL_DYNAMIC_DRAWGL_STREAM_DRAW作为用法)。