3

我试图找出在我的简单程序中调用 glDrawArrays(如 gdb 所说)时导致段错误的原因。

当我直接使用 OpenGl 调用时,程序运行良好。但是当我将它们包装成两个类(正在建设中,vao 和 vbo)时,程序会出现段错误。

所以,在我的包装中,我肯定禁用了某些东西或设置了一些我不应该做的东西。

我的问题是,我如何获得一些诊断信息来帮助我查明问题的根源?

我正在寻找类似于 glGetShaderiv 所做的事情,但是对于 vao 和 vbo s,这将告诉我是否有..say.. 错误地解除了缓冲区。

[我没有在这里发布代码,但如果你们中的任何人想通过测试一个段错误示例来贡献一些时间,这里是源代码的tar.gz。您需要 sfml-2.0rc、glew 和 gcc>=4.6 的工作库。]

4

2 回答 2

4

试试像 GDEBugger 这样的程序:http: //www.gremedy.com/

它使您可以轻松检查 OpenGL 的状态并为您提供良好的诊断。

于 2012-06-22T01:36:08.580 回答
2

调用 glVertexAttribPointer 时必须分配 VBO 数据。但是因为你之后调用它,之前调用的 glVertexAttribPointer 将指示 VAO 指向无效位置 - 因此在绘图期间崩溃。

在注释部分查看您如何调用代码 - 首先是 glBufferData,然后才是 glVertexAttribPointer。

于 2012-06-22T03:12:12.667 回答