【发布时间】:2012-08-18 23:13:44
【问题描述】:
我在我的第一个顶点属性上调用 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 代码重构为面向对象的结构,并且我的程序副本仍然有效,并且我正在按照相同的顺序执行所有操作,所以我想知道如果某些东西可能因处于不同的块中而被破坏。
【问题讨论】:
-
我在这里看不到任何会导致此类问题的东西。您可以围绕该 sn-p 发布更完整的代码吗?如果它确实与非 OO 代码完全相同,那么它应该没有任何区别。