在我的简单程序中调用glDrawArrays(如gdb所说)时,我试图找到导致段错误的原因。
当我直接使用OpenGl调用时,程序运行正常。 但当我把它们分成两个类(正在构建中,vao和vbo)时,程序会出现段错误。
所以,在我的包装纸中,我绝对禁用某些东西或设置一些我不应该的东西。
我的问题是,如何获得一些有助于我找出问题根源的诊断信息?
我正在寻找类似于glGetShaderiv所做的事情,但是对于vao和vbo来说,这会告诉我我是否......错误地解除了缓冲区。
[我不是在这里发布代码,但是如果你们中的任何一个想通过测试一个segfaulting示例来捐赠一些时间,here is a tar.gz of the source。您需要使用sfml-2.0rc,glew和gcc> = 4.6的工作库。]
答案 0 :(得分:4)
尝试像GDEBugger这样的程序:http://www.gremedy.com/
它允许您轻松检查OpenGL的状态并为您提供良好的诊断。
答案 1 :(得分:2)
调用glVertexAttribPointer时,必须对您的VBO数据进行分离。但是因为你之后调用它,之前调用的glVertexAttribPointer将指示VAO指向无效位置 - 因此在绘图期间崩溃。
了解如何在注释部分中调用代码 - 首先是glBufferData,然后是glVertexAttribPointer。