0

我在我的第一个顶点属性上调用 GL.VertexAttribPointer,并且调用产生了 INVALID_OPERATION 错误。我不知道这意味着什么,因为 OpenGL API 没有将 VertexAttribPointer 调用可能导致的错误之一列出:( http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribPointer. xml)。

这是设置错误的位置附近的代码:

GL.BindVertexArray(mi_VAOHandle);

OpenGLUtilityLib.CheckError("binding vertex array");

System.Diagnostics.Debug.WriteLine("Binding attribute...");
GL.EnableVertexAttribArray(0);
OpenGLUtilityLib.CheckError("Enabling VAA 0");
GL.BindBuffer(BufferTarget.ArrayBuffer, mi_PositionBufferHandle);
OpenGLUtilityLib.CheckError("Binding position buffer to array buffer target");
GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, Vector3.SizeInBytes, 0);
OpenGLUtilityLib.CheckError("Set vertex attribute pointer");

最后一次错误检查返回一个错误。

对于上下文,当我遇到此错误时,我一直在将一些初学者 OpenTK GL 代码重构为面向对象的结构,并且我的程序副本仍然有效,并且我正在按照相同的顺序执行所有操作,所以我想知道是否有什么可能已经被不同的街区打破了。

4

1 回答 1

0

我没有调用 GL.GenVertexArrays 来创建我正在加载的 VAO。当您绑定 VAO 时,显然不会创建错误,但是当您第一次尝试在其中设置状态时。

于 2012-08-20T14:57:29.803 回答