操作无效

glVertexPointer invalid operation

本文关键字:无效 操作      更新时间:2023-10-16

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

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

也许我错过了某个地方设置指针,而VAO是绑定和缓冲区不是,将是无效无效的操作?从理论上讲,我可以将这些数据移动到vbo,而不用麻烦,但我想知道为什么会发生这种情况。

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