我在我的第一个顶点属性上调用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代码重构为面向对象的结构,并且我的程序副本仍然有效,而且我正在以相同的顺序执行所有操作,所以我想知道如果某些东西可能因为处于不同的区域而被打破。
答案 0 :(得分:0)
我没有调用GL.GenVertexArrays来创建我正在加载的VAO。绑定VAO时,但是当您第一次尝试在其中设置状态时,显然不会创建错误。