【问题标题】:OpenTK GL.VertexAttribPointer() call producing INVALID_OPERATION errorOpenTK GL.VertexAttribPointer() 调用产生 INVALID_OPERATION 错误
【发布时间】: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 代码完全相同,那么它应该没有任何区别。

标签: opengl opentk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多